web-dev-qa-db-ja.com

UseCompressedOops JVMフラグは何を行い、いつ使用する必要がありますか?

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

77
noahlz

昨年のほとんどのHotSpot JVMは、デフォルトでオンになっています。このオプションにより、参照は64ビットJVMで32ビットになり、32 GB近くのヒープにアクセスできます。 (32ビットポインターを超えることができます)(ほぼ無制限のオフヒープメモリも使用できます)。これにより、メモリを大幅に節約でき、パフォーマンスが向上する可能性があります。

このオプションを使用する場合は、バグ、以前は有効にされなかった理由などの正当な理由がある可能性があるため、デフォルトでオンになっているバージョンに更新することをお勧めします。 Java 6 update 23またはJava 7 update 5。

要するに、オンにしないで、デフォルトでオンになっているバージョンを使用してください。


更新:

Java 8では、-XX:ObjectAlignmentInBytes=そして実際には、ヒープサイズを64 GBにすると、-XX:ObjectAlignmentInBytes=16および32ビット参照を引き続き使用します。

81
Peter Lawrey