2011-08-01 22 views

回答

7

在压缩引用中有巨大的价值。首先,在x86上,64位模式解锁8个新的寄存器,这是一个巨大的性能胜利。其次,使用4个字节而不是8个字节的标头/对象指针可显着提高缓存效率。我们在IBM Java中看到相对于“完整”64位JVM(您的里程会有所不同)的实际优势约为5-10%。这让移动到“小64位”堆成一个简单而无痛的事情,突破了32位JVM中的〜2GB内存限制。 (根据操作系统的不同,真正的32位限制可能在1700mb到〜3.7GB之间)。

1

如果您的主要目标是完全避免垃圾回收,或者至少GC运行频率较低,这是值得的,因为它可能导致内存占用率大幅降低。

2

您可以从每个对象引用获得4个字节。如果对象有更多的引用,它在java对象中很常见,你可以节省更多的内存。 小物体尺寸可能会导致2个结果,首先,GC暂停时间缩短。第二,缓存命中率增加。所以Java应用程序可以提高性能。对于基准测试,启用CompressedOops可以将性能提高5%〜10%。