【问题标题】:What's the purpose of compressed object pointers?压缩对象指针的目的是什么?
【发布时间】:2011-08-02 21:04:58
【问题描述】:

根据我关于CLR could use compressed pointers 的问题,答案是它毫无意义。不过,一些 JVM 正在实现它,那么这种优化的具体好处是什么,因为获得 4 个字节似乎并不值得?

【问题讨论】:

    标签: .net optimization pointers jvm 64-bit


    【解决方案1】:

    压缩引用具有巨大的价值。首先,在 x86 上,64 位模式解锁了 8 个要使用的新寄存器,这是一个巨大的性能提升。其次,使用 4 字节而不是 8 字节的头/对象指针显着提高了缓存效率。相对于“完整”的 64 位 JVM(您的情况会有所不同),我们看到 IBM Java 的实际优势约为 5-10%。这使得迁移到“小型 64 位”堆变得容易且轻松,突破了 32 位 JVM 中约 2gb 的内存限制。 (真正的 32 位限制可能在 1700mb 到 ~3.7gb 之间,具体取决于操作系统)。

    【讨论】:

      【解决方案2】:

      您可以从每个对象引用中获得 4 个字节。如果object有更多的引用,这在java object中很常见,可以节省更多的内存。 小对象大小可能会导致 2 个结果,首先,减少 GC 暂停时间。 2、缓存命中率提高。所以java应用程序可以获得性能提升。对于基准测试,启用 CompressedOops 可以提高 5%~10% 的性能。

      【讨论】:

        【解决方案3】:

        如果您的主要目标是完全避免垃圾回收,或者至少减少 GC 运行频率,那么这是值得的,因为它可以显着减少内存占用。

        【讨论】:

          猜你喜欢
          • 2021-05-08
          • 2016-12-27
          • 2021-12-09
          • 1970-01-01
          • 1970-01-01
          • 2014-03-17
          • 2023-01-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多