起動オプションの初期値
起動オプションの初期値は何か、最終的にどのような値が指定されたか、そのうちコマンドラインで渡した値は何か、は以下のオプションで表示できる。
-XX:+PrintFlagsFinal
: 最終的な設定値-XX:+PrintFlagsInitial
: 初期値-XX:+PrintCommandLineFlags
: コマンドライン上で与えた設定値
java -XX:+PrintFlagsFinal -version
のようにして実行する。Windows TerminalのPowerShell上でシンタックスハイライトの表示がおかしくなるのが気になるならjava -XX:"+PrintFlagsFinal" -version
でもよい。version
オプションを先に指定してjava -version -XX:+PrintFlagsFinal
のようにすると表示されないので注意。
コンパイラに渡すJavaVM起動オプション
javac -J
のあとにオプションを指定する。たとえば2コンパイラでStackOverflowErrorが出たらjavac -J-Xss4m Test1.java
など。
環境ごとの設定オプション
開発時・性能問題調査時・本番環境で指定すべきオプションをわかりやすく指定している記事は以下。検討時のスタート地点として良さそう。
- 日本語だとあまり説明のない
-XX:StackRedPages
、-XX:StackYellowPages
、-XX:StackShadowPages
については以下が分かりやすい。
Java 11 or later equlvalent for Java -XX:+PrintGC
Java8の-XX:+PrintGC
はJava11以降ではどう変わったのか?は以下にまとまっている。