JVMフラグビット間の相互影響
1469 ワード
OracleのHotsport JVMには、いくつかのチューニングフラグがあります.これらのフラグの具体的な値には、次の3つの方法があります.は、ユーザによってコマンドラインに直接設定 である.は、いくつかのオプションによって に間接的に影響する. JVMは、システム環境に応じて適切なデフォルト値、すなわち、いわゆる人体工学原理 を自動的に選択する.
ここでは、2番目のタイプの具体的なインスタンスをリストします.JVMのコンパイラ(bytecodeを対応するプラットフォームに変換するアセンブリコード)にはc 1(Client)とc 2(Server)の区別があり、前者は最適化の程度が低いが、起動速度が速く、後者は最適化が徹底しているが、十分なウォーミングアップが必要であることが知られている.魚と熊掌を兼ねるため、JDK 7はまたいわゆるTieredCompilationを発売し、開始段階でc 1コンパイラを使い、十分なホットスポットがあるまでc 2コンパイラで再コンパイルする.TieredCompilationの有効化は、単純にc 1またはc 2を使用するよりも常に高速ですが、パフォーマンスの向上は限られています.tiered compilationを有効にすると、より多くのメモリが消費されます.これは、よりコンパイルされるため、対応するコードキャッシュもより大きくなります.
TieredCompilationは-XX:+TieredCompilationオプションでアクティブになります.JDK 7ではデフォルトのオプションではありません.ただし、JDK 8ではデフォルトのオプションです.
JDK 7では、-XX:+TieredCompilationオプションが設定されていない場合、コードキャッシュ(-XX:ReservedCodeCacheSize)のサイズは48 Mですが、これを設定すると対応するコードキャッシュのサイズは96 Mになります.
以下に、このオプション間の相互影響を示すスクリプトを示します.
ここでは、2番目のタイプの具体的なインスタンスをリストします.JVMのコンパイラ(bytecodeを対応するプラットフォームに変換するアセンブリコード)にはc 1(Client)とc 2(Server)の区別があり、前者は最適化の程度が低いが、起動速度が速く、後者は最適化が徹底しているが、十分なウォーミングアップが必要であることが知られている.魚と熊掌を兼ねるため、JDK 7はまたいわゆるTieredCompilationを発売し、開始段階でc 1コンパイラを使い、十分なホットスポットがあるまでc 2コンパイラで再コンパイルする.TieredCompilationの有効化は、単純にc 1またはc 2を使用するよりも常に高速ですが、パフォーマンスの向上は限られています.tiered compilationを有効にすると、より多くのメモリが消費されます.これは、よりコンパイルされるため、対応するコードキャッシュもより大きくなります.
TieredCompilationは-XX:+TieredCompilationオプションでアクティブになります.JDK 7ではデフォルトのオプションではありません.ただし、JDK 8ではデフォルトのオプションです.
JDK 7では、-XX:+TieredCompilationオプションが設定されていない場合、コードキャッシュ(-XX:ReservedCodeCacheSize)のサイズは48 Mですが、これを設定すると対応するコードキャッシュのサイズは96 Mになります.
以下に、このオプション間の相互影響を示すスクリプトを示します.
no_tc=$(java -XX:+PrintFlagsFinal -version 2>/dev/null | grep ReservedCodeCacheSize | awk '{print $4}')
tc=$(java -XX:+PrintFlagsFinal -XX:+TieredCompilation -version 2>/dev/null | grep ReservedCodeCacheSize | awk '{print $4}')
cs1=$(expr $no_tc \/ 1024 \/ 1024)
cs2=$(expr $tc \/ 1024 \/ 1024)
echo "Start JDK7 w/o -XX:+TieredCompilation get code cache size: $cs1 MB"
echo "Start JDK7 w/ -XX:+TieredCompilation get code cache size: $cs2 MB"