继我的问题是否CLR could use compressed pointers,答案是它是毫无意义的。尽管如此,一些JVM正在实现它,所以这种优化有什么具体的好处,因为获得4个字节似乎不值得?压缩对象指针的目的是什么?
6
A
回答
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%。
相关问题
- 1. 什么样的压缩是
- 2. 使用指针的目的是什么?
- 3. 什么是指向指针的指针?
- 4. ,对象和指向对象的指针有什么区别?
- 5. 针对moodle的gzip压缩
- 6. 指针指针的意义是什么?
- 7. 指针指针的语法是什么?
- 8. 什么是未对齐的指针?
- 9. 如何打印Go对象的指针值?指针值是什么意思?
- 10. 什么是“压缩JSON”?
- 11. 什么是gZip压缩?
- 12. PHP中多“引用”(对象指针)的上下文是什么?
- 13. 为什么我的对象是一个指针?
- 14. 压缩文件中记录的压缩算法是什么?
- 15. 什么是较大的:压缩JSON或压缩XML?
- 16. 压缩CFDataRef对象?
- 17. jar(war)压缩的优点是什么?
- 18. 解压缩的泛化是什么?
- 19. 什么是强指针和弱指针
- 20. 指针指针是什么意思?
- 21. 为什么指向char的指针指针是最新的?
- 22. 针对Apache Flink的BZip2压缩输入
- 23. voip项目中最流行的压缩算法是什么?
- 24. 什么是压缩目录到单个文件的方法
- 25. 对象解引用指针的指针?
- 26. 原始对象的C++指针和复制对象的指针
- 27. 的std ::对对象指针
- 28. JavaScript:什么是全局对象,“this”指的是什么?
- 29. 为什么一个对象变量必须是一个指针?
- 30. 通过指向其中一个成员的指针来确定对象指针的最佳方法是什么?