![](/img/trans.png)
[英]java- use a file for java heap space bigger than 1Gb in a 32bit windows
[英]32bit heap optimization in Java 7 and 8
如果我錯了請糾正我,但據我所知,從Oracle HotSpot JVM 1.7開始,64位版本的JVM不能再以“32位”模式運行(-d32命令行參數)。
我聽說,如果JVM進程配置的最大堆小於32Gb,JVM會通過保留32位指針等自動優化內存使用量。這是正確的嗎? 這仍然適用於64位Oracle HotSpot JVM嗎? 如果是,我該如何關閉此行為並禁用32位內存優化?
謝謝!
除了這里提供的答案之外, UseCompressedOops JVM標志做了什么以及何時應該使用它?
64位版本的JVM不能再以“32位”模式運行
64位JVM只能以64位模式運行。
我聽說,如果JVM進程配置的最大堆小於32Gb,JVM會通過保留32位指針自動優化內存使用情況,
當堆小於32 GB(GB =千兆字節,Gb =千兆位)時,JVM在Java 6,7和8中默認使用壓縮的Oops。
JVM使用32位引用,它是實際數據的索引。 即使用的數字可能會經歷重要的翻譯,成為實際的指針。 您可以使用Unsafe.getInt()查看此索引。
Compressed Oops Java 8的默認限制為64 GB,您可以通過更改對象對齊將其增加到128 GB,但由於丟失了太多內存以填充,因此很少這樣做。
這仍然適用於64位Oracle HotSpot JVM嗎? 如果是,我該如何關閉此行為並禁用32位內存優化?
它適用於Oracle JVM和OpenJDK,您可以使用-XX:-UseCompressedOops
關閉它-XX:-UseCompressedOops
但我無法想象您為什么-XX:-UseCompressedOops
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.