1. ホーム
  2. java

[解決済み] UseCompressedOops JVMフラグは何をし、いつ使うべきですか?

2023-06-22 19:02:33

質問

HotSpot JVM フラグとは何ですか? -XX:+UseCompressedOops は何をするもので、いつ使うべきですか?64 ビット Java インスタンスでそれを使用する場合 (使用しない場合)、パフォーマンスおよびメモリ使用量にどのような違いがありますか?

どのように解決するのですか?

昨年のほとんどのHotSpot JVMは、デフォルトでこれをオンにしていました。このオプションは、64 ビット JVM で 32 ビットである参照を可能にし、32 GB 近いヒープにアクセスします。(32ビットポインターができるよりも多く) (同様に、ほぼ無制限のオフヒープメモリを持つことができます)。 これは、かなりの量のメモリを節約し、潜在的にパフォーマンスを向上させることができます。

このオプションを使用したい場合は、デフォルトで有効になっているバージョンに更新することをお勧めします。Java 6 update 23 または Java 7 update 5 を試してみてください。

要するに、オンにせず、デフォルトでオンになっているバージョンを使用することです。


更新しました。

Java8では -XX:ObjectAlignmentInBytes= を設定するオプションがあり、実際、ヒープサイズを64GBにした場合、そのヒープには -XX:ObjectAlignmentInBytes=16 を使用し、32 ビット参照を使用します。