繼我的問題是否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. 通過指向其中一個成員的指針來確定對象指針的最佳方法是什麼?