压缩对象指针的目的是什么?

Jul*_*ain 6 .net optimization 64-bit pointers jvm

在我关于CLR是否可以使用压缩指针的问题之后,答案是它毫无意义.仍然有一些JVM正在实现它,所以这种优化的具体好处是什么,因为获得4个字节似乎不值得呢?

Tre*_*ald 7

压缩引用有很大的价值.首先,在x86上,64位模式解锁了8个新的寄存器,这是一个巨大的性能胜利.其次,使用4字节而不是8字节的头/对象指针可以显着提高缓存效率.我们看到IBM Java中的实际好处相对于"完整"64位JVM大约为5-10%(您的里程会有所不同).这使得向"小64位"堆移动变得简单而轻松,超过32位JVM中的~2gb内存限制.(真正的32位限制可能是1700mb到~3.7gb,具体取决于操作系统).