代码之家  ›  专栏  ›  技术社区  ›  Thilo

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

  •  17
  • Thilo  · 技术社区  · 14 年前

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

    64位Hotspot JVM需要8个字节吗?还是在进行巧妙的压缩? 如果不是,每一个 Object[] 需要两倍多的堆内存,我认为(希望,期望)情况并非如此。

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

    2 回复  |  直到 9 年前
        1
  •  16
  •   Cripto    9 年前

    在64位系统中,对象引用通常为8字节长。但在Sun/Oracle最近推出的JVM中,您可以启用 Compressed Oops 将引用大小减少到4个字节,但要降低堆大小的限制。

        2
  •  6
  •   aioobe    14 年前

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

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