一个空对象有多少字节?
How many bytes a null object?
当我们有一个参考变量时,例如为了简化它 Integer i
我们可以假设 i
的大小大约是 16 字节开销 + 实际 int 的 4 字节 + 4 字节填充,即 24 字节。
所以我的问题是,如果 i
为空,我们是否只有 4 个字节的引用没有指向任何地方,或者是否有任何其他额外的 "hidden" 信息添加到此?
如果我没记错的话,JVM 规范提到 null
不需要具有特定的值或表示形式,因此它可以是任何东西。我不知道 通常 是什么,但合理猜测可能是 32 位或 64 位零,具体取决于 JVM 版本。
编辑:这是相关部分:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.4
The Java Virtual Machine specification does not mandate a concrete value encoding null.
干杯,
是的,它仍然使用内存。我相信 32 位使用 4 个字节,64 位使用 8 个字节。
找到了更多关于此的信息:Java - Does null variable require space in memory
当我们有一个参考变量时,例如为了简化它 Integer i
我们可以假设 i
的大小大约是 16 字节开销 + 实际 int 的 4 字节 + 4 字节填充,即 24 字节。
所以我的问题是,如果 i
为空,我们是否只有 4 个字节的引用没有指向任何地方,或者是否有任何其他额外的 "hidden" 信息添加到此?
如果我没记错的话,JVM 规范提到 null
不需要具有特定的值或表示形式,因此它可以是任何东西。我不知道 通常 是什么,但合理猜测可能是 32 位或 64 位零,具体取决于 JVM 版本。
编辑:这是相关部分:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.4
The Java Virtual Machine specification does not mandate a concrete value encoding null.
干杯,
是的,它仍然使用内存。我相信 32 位使用 4 个字节,64 位使用 8 个字节。
找到了更多关于此的信息:Java - Does null variable require space in memory