Java接口占用多少空间(二进制/内存)?

Java接口占用多少空间(二进制/内存)?,java,interface,sizeof,Java,Interface,Sizeof,我试图了解java接口将占用多少空间,无论是在二进制磁盘上,还是在每个实例化对象的基础上。强制性的“每个JVM实现都可能不同”免责声明,我更感兴趣的不是100%准确的答案,而是理解如何处理这个问题的要点 如果我们假设一个简单的接口(没有静态的最终变量,没有默认的实现),那么在二进制中需要多少空间?我假设需要存储人类可读的类名,以便进行调试/反射,还可能需要一些唯一的类标识符?当实现此接口的对象被实例化时,该接口会向对象的内存表示(如果有的话)添加多少额外字节的开销 一个java接口将占用多少空间

我试图了解java接口将占用多少空间,无论是在二进制磁盘上,还是在每个实例化对象的基础上。强制性的“每个JVM实现都可能不同”免责声明,我更感兴趣的不是100%准确的答案,而是理解如何处理这个问题的要点

如果我们假设一个简单的接口(没有静态的最终变量,没有默认的实现),那么在二进制中需要多少空间?我假设需要存储人类可读的类名,以便进行调试/反射,还可能需要一些唯一的类标识符?当实现此接口的对象被实例化时,该接口会向对象的内存表示(如果有的话)添加多少额外字节的开销

一个java接口将占用多少空间,无论是在二进制磁盘上,还是在每个实例化对象的基础上

磁盘上的二进制文件:
明确答案:请参见
.class
文件的文件大小。
简短回答:视情况而定。
长答案:这取决于:包名的长度、接口名的长度、方法的数量、方法名的长度、参数的数量、参数的类型、参数名的长度、返回类型的类型、是否包含调试信息、字节码的版本等等。。。还有更多

基于每个实例化对象:
没有

一个java接口将占用多少空间,无论是在二进制磁盘上,还是在每个实例化对象的基础上

磁盘上的二进制文件:
明确答案:请参见
.class
文件的文件大小。
简短回答:视情况而定。
长答案:这取决于:包名的长度、接口名的长度、方法的数量、方法名的长度、参数的数量、参数的类型、参数名的长度、返回类型的类型、是否包含调试信息、字节码的版本等等。。。还有更多

基于每个实例化对象:

无。

这不是一个很有意义的问题,随着类文件格式的变化和JVM实现的变化,任何答案都会随着时间的推移而不同。在不同的平台上可能会有不同的答案。也许如果你解释一下“答案”会给你什么,以及为什么知道它很重要。当然,“额外的开销有多少字节…”的唯一答案是“这取决于情况”。这不是一个逃避的答案,这是唯一有效的答案。因此,它不仅关心回答一个人的问题,它还是一个长期的信息库。关于当前最新Java的准确信息明天可能不相关,今天也可能与使用不同版本Java的其他人无关。请阅读JVM字节码规范。然而,不知何故,这个问题产生了两条有用的信息,它们值得了解,并将在未来几年中相关。1) JVM字节码规范回答了部分问题,2)每个对象目前显然没有开销。这不是一个很有意义的问题,随着类文件格式的改变和JVM实现的改变,任何答案都会随着时间的推移而不同。在不同的平台上可能会有不同的答案。也许如果你解释一下“答案”会给你什么,以及为什么知道它很重要。当然,“额外的开销有多少字节…”的唯一答案是“这取决于情况”。这不是一个逃避的答案,这是唯一有效的答案。因此,它不仅关心回答一个人的问题,它还是一个长期的信息库。关于当前最新Java的准确信息明天可能不相关,今天也可能与使用不同版本Java的其他人无关。请阅读JVM字节码规范。然而,不知何故,这个问题产生了两条有用的信息,它们值得了解,并将在未来几年中相关。1) JVM字节码规范回答了部分问题,2)每个对象目前显然没有开销。这真有趣。