通常Java VMの状態を見るためには、Java VM起動時にオプション(たとえばjavaコマンドのパラメタ)で設定する必要があります。また、設定したオプションはJava VMの起動から終了まで一意で、設定値を途中で変更することはできません。
Java監視機能のVMオプションの変更機能を使用すると、すでに起動中のJava VMのオプションを変更することができます。
ただし、変更できるオプションは、VMオプションの変更機能で規定する一部のオプションに限ります。
注意
VMオプション操作により得られる結果の出力先
VMオプションの変更機能は、現在Java監視機能が監視しているJava VMに設定されているオプションの値を変更するだけです。
Java監視機能の画面上で結果を見ることや、Java監視機能が動作している端末上にファイルとして出力することはできません。
VMオプション操作により得られる結果は、Javaプロセスが動作しているサーバ上に出力されます。
Java監視機能が終了する時、変更したVMオプションの値はそのままになります
Java監視機能が終了した時、それまでに変更したVMオプションの値は継続されます。
(Java監視機能の終了とは、意図的なjconsoleの終了以外、Java監視機能やjconsoleの異常や接続の解除などを含みます。)
Java監視機能は、監視対象のJava VMを起動した時の値に戻す処理は行いません。
VMオプションの変更機能操作中にjconsoleの出力ウィンドウが表示された場合
VMオプションの変更機能操作の時、Java監視機能がエラーを検出するとjconsoleの出力ウィンドウを表示する場合があります。
jconsoleの出力ウィンドウには、エラーを検出した際のException名、エラーメッセージ、Exception発生時のスタックトレースを表示します。
メッセージの意味、必要な対処は“A.5.12 メッセージ”を参照してください。
VMオプションの変更機能の選択
[VMオプション変更]タブを選択(クリック)することでVMオプションの変更画面が表示され、操作が可能な状態になります。
この時点で表示されている各オプションの値は、Java監視機能が、測定対象のJava VMに接続した時点のものです。
VMオプションの変更機能で変更可能なオプション
変更できるオプションは以下です。
GC表示ポリシー
System.gc()の抑止
System.gc()の検出
タイムスタンプ形式
GC表示ポリシーとは、Java VMで発生しているガーベジコレクション(GC)処理の情報を出力する形式を示すオプションです。
変更は次の手順で行います。
[GC表示ポリシーの横の[変更する]ボタンを押します。
この例は、[GC表示ポリシー]の設定が行われていない(GCに関する情報出力の指定が行われていない)ことを示しています。
[GC表示ポリシー]には、次のものがあります。
GC表示ポリシー | 意味 |
---|---|
表示なし | GC情報の出力指定はありません。 |
標準 | “-verbose:gc”指定に相当する情報の出力の指定です。 |
標準+経過時間 | “-verbose:gc”指定に相当する情報にJava VM起動からの経過時間を付けた出力の指定です。 |
詳細 | “-verbose:gc -XX:+UseFJverbose”指定に相当する情報の出力指定です。 |
未定義 | “表示なし”、“標準”、“標準+経過時間”、“詳細”以外の指定がされている場合を示します。 変更ダイアログの選択肢としては、表示されません。例えば、「未定義」から「表示なし」に変更したあとで、「未定義」に戻すことはできません。 |
“-XX:+UseFJverbose”については、“チューニングガイド”の“JDK/JRE 7のチューニング”の“ガーベジコレクション処理の結果ログ出力機能の強化”を参照してください。
GC表示ポリシーの変更ダイアログが表示されます。
変更する形式のラジオボタンを選択します。
上の図は[標準+経過時間]を選んだ場合の例です。
このとき[取消し]ボタンまたは[×]ボタンを押すと、変更を行わずにダイアログを閉じます。
[了解]ボタンを押し、GC表示ポリシーが変更されます。
このとき“[C表示ポリシー]の表示も選んだものに変更されます。
注意
GC情報の出力先
[GC表示ポリシー]に[表示なし]以外を指定した場合に出力されるGC情報は、監視対象のJavaプロセスの標準出力に出力されます。
ただし、監視対象のJavaプロセス起動時に、オプションとして“-Xloggc:ファイル名”が指定されている場合、GC情報は“ファイル名”に指定したファイルに出力されます。
“-Xloggc:ファイル名”指定でのデフォルトGC表示ポリシー
Javaプロセス起動時に、オプションとして“-Xloggc:ファイル名”が指定されている場合でかつ、GC情報の出力に関するオプションの指定が無い場合、“GC表示ポリシー”は「標準+経過時間」がデフォルトとして採用されます。
Javaプログラム内でSystem.gc()メソッドまたはRuntime.gc()メソッドの呼び出しが行われた場合、この2つのメソッドによるGC処理を抑止するオプションです。
オプションの操作は、次の手順で行います。
[System.gc()の抑止]の横の[変更する]ボタンを押します。
System.gc()の抑止の変更ダイアログが表示されます。
変更するラジオボタンを選択します。
上の図は無効から有効に変更する場合の例です。
このとき[取消し]ボタンまたは[×]ボタンを押すと、変更を行わず、ダイアログを終了します。
[了解]ボタンを押し、System.gc()の抑止の選択状態が変更されます。
このとき[System.gc()の抑止]の表示も変更されます。
Javaプログラム内でSystem.gc()メソッドまたはRuntime.gc()メソッドの呼び出しが行われた場合、呼び出したJavaスレッドのスタックトレースを出力するオプションです。
オプションの操作は、次の手順で行います。
[System.gc()の検出]の横の[変更する]ボタンを押します。
System.gc()の検出の変更ダイアログが表示されます。
変更するラジオボタンを選択します。
上の図は無効から有効に変更する場合の例です。
このとき[取消し]ボタンまたは[×]ボタンを押すと、変更を行わず、ダイアログを終了します。
[了解]ボタンを押し、System.gc()の検出の選択状態が変更されます。
このとき[System.gc()の検出]の状態の表示も変更されます。
注意
System.gc()検出時のスタックトレース出力先について
“System.gc()の検出”を「有効」に設定し、System.gc()メソッドまたはRuntime.gc()メソッドの呼び出しを検出した場合のスタックトレースの出力先は、監視対象のJavaプロセス起動時の“-XX:+PrintJavaStackAtSystemGC”オプションの指定の有無に影響を受けます。
“-XX:+PrintJavaStackAtSystemGC”オプションの指定 | 出力先 |
---|---|
なし | 標準出力(※) |
あり | 標準出力(※)およびFJVMログファイル |
※標準出力がロギングされている場合は、そのファイルへ出力されます。
“System.gc()の検出”を「無効」に設定した場合は、“-XX:+PrintJavaStackAtSystemGC”オプションの指定の有無に関係無くスタックトレースの出力は行われません。
“-XX:+PrintJavaStackAtSystemGC”オプションについては、“チューニングガイド”の“JDK/JRE 7のチューニング”の“java.lang.System.gc()実行時におけるスタックトレース出力機能”を参照してください。
GC表示ポリシーで「詳細」を選んだときの出力情報や、動的コンパイル発生状況のログ出力に含まれる、タイムスタンプの形式を指定するオプションです。オプション“ -XX:FJverboseTime”の指定に相当します。
オプション“ -XX:FJverboseTime”については、“チューニングガイド”の“JDK/JRE 7のチューニング”の“ログ出力における時間情報のフォーマット指定機能”を参照してください。
オプションの操作は、次の手順で行います。
[タイムスタンプ形式]の横の[変更する]ボタンを押します。
タイムスタンプ形式の変更ダイアログが表示されます。
変更するラジオボタンを選択します。
上の図は、タイムスタンプの形式を[経過時間]から[日時と経過時間]に変更する場合の例です。
このとき[取消し]ボタンまたは[×]ボタンを押すと、オプションを変更せず、ダイアログを終了します。
[了解]ボタンを押すと、タイムスタンプ形式が変更されます。
このとき“タイムスタンプ形式”の表示も変更されます。