64位JVM上的Object引用的内存要求

对32位JVM(至少在Hotspot上)上的对象的引用占用4个字节。

64位Hotspot JVM需要8个字节吗? 或是一些聪明的压缩正在进行? 如果没有,每个Object[]都需要两倍的堆内存,我不知何故(希望,期待)并非如此。

更新/额外问题 :这是否真的重要,或者这是一个可以忽略不计的增加,因为大多数引用指向远大于几个字节的对象(而有人可能会争辩说这些对象主要是由对其他对象的引用组成) ?

在64位系统中,对象引用通常为8字节长。 但是在Sun / Oracle最近的JVM中,您可以启用Compressed Oops ,它将参考大小减小到4个字节,但代价是堆大小的限制较小。

根据Java平台性能,它没有严格定义,但通常在64位系统上为8个字节:

引用的大小没有很好地定义,但在32位系统上通常为4个字节,在64位系统上通常为8个字节。