7.10.2 -XX:[+|-]HitachiLocalsInStackTrace
スレッドダンプ出力時のスタックトレースに、各メソッドのローカル変数情報を追加して出力します。
説明
スレッドダンプ出力時のスタックトレースに、各メソッドのローカル変数情報を追加して出力します。
書式
-XX:[+|-]HitachiLocalsInStackTrace
指定できる値
型:String
- -XX:+HitachiLocalsInStackTrace
-
スレッドダンプ出力時のスタックトレースに、ローカル変数情報を出力します。
- -XX:-HitachiLocalsInStackTrace
-
スレッドダンプ出力時のスタックトレースに、ローカル変数情報を出力しません。
デフォルト値
- 定義項目の省略
-
-XX:-HitachiLocalsInStackTrace
出力例
次のJavaプログラム例を使用した出力例を、次に示します。
- Javaプログラム例
-
class Example2 { public static void main(String[] args) { Example2 e2 = new Example2(); e2.method(); // 4行目 } synchronized void method() { int l1 = 1; float l2 = 2.0f; String l3 = "local 3"; Character l4 = new Character('X'); Object l5 = new Thread(); Object[] l6 = new Thread[10]; <ここでスレッドダンプ出力!> // 15行目 } }
- 出力例
-
-XX:+HitachiLocalsSimpleFormatオプションおよび-XX:+HitachiTrueTypeInLocalsオプションが指定されている場合
"main" #1 prio=5 os_prio=0 jid=<N/A> tid=0x0000000000297800 nid=0x11500 runnable [0x0000000002a8f000..0x0000000002a8f6c0] java.lang.Thread.State: RUNNABLE stack= [0x0000000002a90000..0x0000000002994000..0x0000000002991000..0x0000000002990000] [user cpu time=3790ms, kernel cpu time=78ms] [blocked count=0, waited count=0] at Example2.method(Unknown Source) - locked <0x00000000120d03a8> (a Example2) locals: (Example2) this = <0x00000000120d03a8> (int) l1 = 1 (float) l2 = 2 (java.lang.String) l3 = <0x00000000120d03b8> (java.lang.Character) l4 = <0x00000000120d0600> (java.lang.Object) l5 = <0x00000000120d07f8> (java.lang.Object[]) l6 = <0x00000000120d0bc8> at Example2.main(Unknown Source) locals: (java.lang.String[]) args [arg1] = <0x00000000120d0390> (Example2) e2 = <0x00000000120d03a8>
注意事項
-
ローカル変数情報を完全に収集するためには、javacでclassファイルを生成する際に、-gオプションまたは-g:varsオプションを付加してclassファイル内にローカル変数情報を埋め込んでおく必要があります。-gオプションまたは-g:varsオプションを付加しないで作成されたclassファイルについては、収集可能な範囲でローカル変数情報が出力されます。
-
一般にスタックトレース情報の収集を行うスレッドと収集対象のスレッドは一致しません。このため、情報収集を行うためには、対象スレッドを停止させる必要があり、toStringメソッドを呼び出すことはできません。このため、-XX:HitachiCallToStringオプションの指定は無効になります。
-
制御構造が複雑で行数が多いメソッドのローカル変数情報を出力する場合、解析に時間が掛かるため、拡張スレッドダンプの出力やスレッドスタックトレースの取得に時間が掛かることがあります。