-1
我想了解一个java接口将占用多少空间,二进制中的磁盘和每个实例化对象的基础上。强制性的“每个JVM的实现可能是不同的”免责声明,我更感兴趣的不是100%的确切答案,而是理解如何处理的基本要素。Java界面需要多少空间(二进制/内存)?
如果我们假设一个简单的接口(没有静态的最终变量,没有默认的实现),那么这个二进制会占用多少空间?我假设需要存储可读的类名,以进行调试/反射,还可能存在一些唯一的类标识符?当实现此接口的对象被实例化时,接口将添加到对象的内存中表示中多少额外的开销字节(如果有)?
这不是一个非常有意义的问题,随着类文件格式的改变和JVM实现的改变,随着时间的推移,任何答案都会有所不同。它可能会在不同的平台上有不同的答案。也许如果你解释了“答案”会给你什么以及知道为什么这很重要。当然,唯一的答案是“......多少额外字节的开销......”是“它取决于”。 –
这不是一个cop-out答案,它是*唯一有效答案*。 SO不仅仅关心今天回答一个人的问题,它还是一个长期的信息库。关于当前最新Java的准确性可能与明天无关,并且今天可能与使用不同版本Java的其他人无关。 – Adrian
阅读JVM字节码规范。 https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html –