64 位 JVM 上对象引用的内存要求

2022-09-03 01:38:21

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

64 位热点 JVM 是否需要 8 个字节?还是正在进行一些聪明的压缩?如果不是,那么每个人都需要两倍的堆内存,我不知何故认为(希望,期望)并非如此。Object[]

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


答案 1

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


答案 2

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

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