-XX:[+|-]HitachiThreadDump(拡張スレッドダンプ情報出力オプション)
形式
- -XX:+HitachiThreadDump
-
-Xrsオプションが指定されていない場合,スレッドダンプ出力時に拡張スレッドダンプ情報を出力します。
- -XX:-HitachiThreadDump
-
スレッドダンプ出力時に標準のスレッドダンプ情報を出力します。
説明
拡張スレッドダンプ情報を出力するかどうかを指定します。
スレッドダンプは,標準出力,および次に示すファイルに出力されます。
- デフォルト値
-
-
-XX:+HitachiThreadDump
-
- スレッドダンプ出力先
-
デフォルトでは,JavaVM実行時のカレントディレクトリです。環境変数JAVACOREDIRを指定することで,出力先を変更することができます。
- スレッドダンプ出力ファイル名
javacore<プロセス番号>.<YYMMDDhhmmss>※.txt
- 注※
-
YY:年(西暦で下2けた),MM:月(2けた),DD:日(2けた)
hh:時間(24時間表記),mm:分(2けた),ss:秒(2けた)
スレッドダンプ情報の構成を,次に示します。
出力情報 |
内容 |
---|---|
ヘッダ |
スレッドダンプを開始した日付および時刻,JavaVMバージョン情報,起動コマンドラインを出力します。 |
システム設定 |
次の情報を出力します。
|
動作環境 |
次の情報を出力します。
|
メモリ情報 |
Windowsの場合,次の情報を出力します。
|
Javaヒープ情報 |
Javaヒープの各世代のメモリ使用状況を出力します。 |
JavaVM内部メモリマップ情報 |
JavaVM自身の確保しているメモリの領域情報を出力します。 |
JavaVM内部メモリサイズ情報 |
JavaVM自身の確保しているメモリのサイズ情報を出力します。 |
アプリケーション情報 |
次の情報を出力します。
|
ライブラリ情報 |
ローディングされているライブラリの情報を出力します。 |
スレッド情報 <スレッド1> : <スレッドn> |
スレッドごとにスレッド情報を出力します。現存する全スレッドのスタックトレースを出力します。 |
Javaモニタダンプ※ |
Javaモニタオブジェクトの一覧を表示します。スレッド間の排他待ちの状況を確認できます。 |
JNIグローバル参照情報 |
JavaVMが保持しているJNIのグローバル参照の数を出力します。 JNIグローバル参照は,次の場合に作成されます。
|
Explicitヒープ情報 |
Explicitヒープ情報では,Explicitヒープ全体での利用状況を出力します。Explicitヒープ利用の有無にかかわらないで,-XX:+HitachiUseExplicitMemoryが有効の場合は必ず出力されます。 |
Explicitメモリブロック情報 |
Explicitメモリブロック情報では,次の情報を出力します。ただし,Explicitメモリブロックが1つも存在しない場合は何も出力されません。
|
フッタ |
スレッドダンプを終了した日付および時刻を出力します。 |
出力形式
ヘッダ
EEE MMM dd hh:mm:ss yyyy※ Full thread dump Java HotSpot(TM) <VM type> (25.20-b23-CDK0970-<ビルド日> mixed mode) <起動コマンドライン> …
- 注※
-
EEEは曜日,MMMは月,ddは日を表します。また,hhは時間,mmは分,ssは秒,yyyyは年(西暦)を表します。
<VM type>はClient VM,Server VMまたは64-Bit Server VMのどれかを表します。
- システム設定
System Properties ----------------- Java Home Dir : <JDK実行環境インストールディレクトリ> Java DLL Dir : <JDKを構成するライブラリのインストールディレクトリ> Sys Classpath : <システムクラスパス> User Args : <Javaコマンドオプション1> <Javaコマンドオプション2> …
- 動作環境(Windowsの場合)
Operating Environment --------------------- Host : <ホスト名>:<IPアドレス> OS : <OSバージョン> CPU : <CPU種別>, <利用可能CPU数/システム全体のCPU数>
- 動作環境(UNIXの場合)
Operating Environment --------------------- Host : <ホスト名>:<IPアドレス> OS : <OSバージョン> CPU : <CPU種別>, <利用可能CPU数/システム全体のCPU数> Resource Limits - RLIMIT_CPU :<プロセスで使用可能な秒数> RLIMIT_FSIZE :<最大ファイルサイズ(単位:バイト)> RLIMIT_DATA :<malloc可能なサイズ(単位:バイト)> RLIMIT_STACK :<スタックの最大サイズ(単位:バイト)> RLIMIT_CORE :<coreの最大サイズ(単位:バイト)> RLIMIT_RSS :<プロセスの常駐サイズ(単位:バイト)> RLIMIT_AS :<プロセストータルの利用可能メモリ(単位:バイト)> RLIMIT_NOFILE :<最大のファイルディスクリプタ値>
- メモリ情報(Windowsの場合)
Memory Status ------------- Memory in use : <メモリ使用状況(単位:パーセント)> Physical memory : <物理メモリ使用量>※ free Virtual memory : <仮想メモリ使用量>※ free Paging file : <ページング使用量>※ free
- 注※
-
<利用可能サイズ>/<総サイズ> の形式で表示されます(単位:バイト)。
Javaヒープ情報(SerialGCを使用していて,かつJDK11以前の場合)
Heap Status ----------- def new generation max <最大の容量>, total <現在の容量>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) [<領域先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>) eden space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) from space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) to space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) tenured generation max <最大の容量>, total <現在の容量>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) [<領域先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>) the space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <次の空きブロックの先頭アドレス>, <予約済み領域の末尾アドレス>) Metaspace max<最大の容量>, capacity <コミット済みの領域からフリー領域を除いたメモリサイズ>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) class space max <最大の容量>, capacity <コミット済みの領域からフリー領域を除いたメモリサイズ>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>)
- 注
-
容量およびメモリサイズの単位はキロバイトです。
Javaヒープ情報(SerialGCを使用していて,かつJDK17以降の場合)
Heap Status ----------- def new generation max <最大の容量>, total <現在の容量>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) [<領域先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>) eden space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) from space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) to space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <予約済み領域の末尾アドレス>) tenured generation max <最大の容量>, total <現在の容量>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) [<領域先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>) the space <現在の容量>, <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <次の空きブロックの先頭アドレス>, <予約済み領域の末尾アドレス>) Metaspace max<最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total) class space max <最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) [<領域先頭アドレス>, <予約済み領域の末尾アドレス>)
- 注
-
容量およびメモリサイズの単位はキロバイトです。
Javaヒープ情報(G1GCを使用していて,かつJDK11以前の場合)
Heap Status ----------- garbage-first heap total <現在の容量>, used <使用中のメモリ> [<領域先頭アドレス>, <コミット済みの末尾アドレス>, <予約済み領域のアドレス>) region size <1リージョンのサイズ>, <New領域の使用中リージョン数> young (<New領域の使用中メモリ>), <Survivor領域の使用中リージョン数> survivors (<Survivor領域の使用中メモリ>) Metaspace max <最大の容量>, capacity <コミット済みの領域からフリー領域を除いたメモリサイズ>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) class space max <最大の容量>, capacity <コミット済みの領域からフリー領域を除いたメモリサイズ>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>)
Javaヒープ情報(G1GCを使用していて,かつJDK17以降の場合)
Heap Status ----------- garbage-first heap total <現在の容量>, used <使用中のメモリ> [<領域先頭アドレス>, <コミット済みの末尾アドレス>, <予約済み領域のアドレス>) region size <1リージョンのサイズ>, <New領域の使用中リージョン数> young (<New領域の使用中メモリ>), <Survivor領域の使用中リージョン数> survivors (<Survivor領域の使用中メモリ>) Metaspace max <最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中のメモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) class space max <最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中のメモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) [<領域先頭アドレス>, <予約済み領域の末尾アドレス>)
Javaヒープ情報(ZGCを使用している場合)
Heap Status ----------- ZHeap used <使用中のメモリ>, capacity <コミット済みの領域からFree領域を除いたメモリサイズ>, max capacity <最大のコミット済みの領域からFree領域を除いたメモリサイズ> Metaspace max <最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中のメモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) class space max <最大の容量>, committed <コミット済みのメモリサイズ>, reserved <予約済みのメモリサイズ>, used <使用中のメモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/committed) [<領域先頭アドレス>, <予約済み領域の末尾アドレス>)
- 注
-
次の情報の単位はメガバイトです。それ以外の容量およびメモリサイズの単位はキロバイトです。
-
<使用中のメモリ>
-
<コミット済みの領域からFree領域を除いたメモリサイズ>
-
<最大のコミット済みの領域からFree領域を除いたメモリサイズ>
-
JavaVM内部メモリマップ情報
JVM Internal Memory Map ----------------------- <メモリ確保関数>:address = <開始アドレス> - <終了アドレス> (size:<サイズ>)
- 注
-
<メモリ確保関数>:mmap()かmalloc()のどちらかが出力されます。
<開始アドレス>:メモリ領域の開始アドレスが16進で出力されます。
<終了アドレス>:メモリ領域の終了アドレスが16進で出力されます。
<サイズ>:確保しているメモリ領域のサイズが出力されます(単位:バイト)。
JavaVM内部メモリサイズ情報
JVM Internal Memory Status -------------------------- Heap Size :<確保しているメモリサイズ>※ Alloc Size :<使用中のメモリサイズ>※ Free Size :<未使用のメモリサイズ>※
- 注※
-
単位:バイト
アプリケーション情報(Windowsの場合)
Application Environment ----------------------- Signal Handlers - SIGINT :<シグナルハンドラ情報> SIGILL :<シグナルハンドラ情報> … SIGBREAK :<シグナルハンドラ情報> SIGABRT :<シグナルハンドラ情報> Environment Variables - <環境変数>=<値> … Cueeent Directory - C:\Program Files\Hitachi\Cosminexus\CC\…
アプリケーション環境(UNIXの場合)
Application Environment ----------------------- Signal Handlers -※1 SIGHUP :<シグナルハンドラ情報> SIGINT :<シグナルハンドラ情報> … SIGSOUND :<シグナルハンドラ情報> SIGSAK :<シグナルハンドラ情報> Signal Handlers - シグナル種別: [シグナルハンドラアドレス], sa_mask[0]=シグナルマスク, sa_flags=特殊フラグ … Environment Variables -※2 <環境変数>=<値> … Current Directory - /opt/Cosminexus/CC/server/…
- 注※1
-
次の情報が表示されます。
-
シグナルハンドラがインストールされている場合は,そのアドレス。
-
SIG_DFLである場合は,default。
-
SIG_IGNである場合は,ignored。
-
- 注※2
-
次の情報が表示されます。
-
シグナル種別には,/usr/include/sys/signal.hに定義されているシグナル名。
-
シグナルハンドラアドレスには,シグナルハンドラのアドレスが16進数で出力されます。ライブラリ名+オフセットという形式で表示されることもあります。
-
シグナルマスクには,sigaction()で取り出せる構造のsa_maskフィールド値が16進数で出力されます。
-
特殊フラグには,sigaction()で取り出せる構造のsa_flagsフィールド値が16進数で出力されます。
-
- ライブラリ情報(Windows,Linuxの場合)
Loaded Libraries ---------------- Dynamic libraries : <開始アドレス> - <終了アドレス> <コマンド> <開始アドレス> - <終了アドレス> <ライブラリ> …
- ライブラリ情報(AIXの場合)
Loaded Libraries ---------------- <コマンド> text :<開始アドレス>-<終了アドレス> (サイズ) data :<開始アドレス>-<終了アドレス> (サイズ) <ライブラリ> text :<開始アドレス>-<終了アドレス> (サイズ) data :<開始アドレス>-<終了アドレス> (サイズ) …
- スレッド情報
----------- "<スレッド名>" <daemon> prio=<優先度> jid=<ハッシュ値> tid=<スレッドID> nid=<nativeID> <status> [開始アドレス...終了アドレス] java.lang.Thread.State: <スレッドの現在のステータス>※1 stack=[<スタック開始アドレス>..<YellowPageアドレス>..<RedPageアドレス>..<スタック終了アドレス>] [user cpu time=<ユーザー時間>ms, kernel cpu time=<カーネル時間>ms] [blocked count=<ブロック回数>, waited count=<待機回数>] at <クラス名>.<メソッド名>(<モジュール情報>※2<メソッド情報>) …
- 注※1
-
<スレッドの現在のステータス>の情報は,JDK 6がベースの場合で,バージョンが08-10以降のときにだけ出力されます。
- 注※2
-
<モジュール情報>は,JDK9以降がベースの場合にだけ出力されます。
出力内容を説明します。
- <スレッド名>
-
Threadクラスのコンストラクタに指定されたスレッド名称が出力されます。
-
<daemon>:デーモンスレッドである場合に,"daemon"と出力されます。
-
<優先度>:Thread#setPriorityで設定された優先度が出力されます。
-
<ハッシュ値>:System.identityHashCode()を呼び出して得られる値と同一の値が8けたの16進数で出力されます。
-
<スレッドID>:スレッドオブジェクトのメモリ上のアドレス。
-
<nativeID>:OSレベルのスレッドID。
-
<status>:スレッドの状態。
runnable:実行中または実行可能なスレッド
in Object.wait(),waiting for monitor entryまたはwaiting on condition:モニタロック待ちのスレッド
sleeping:中断状態のスレッド
-
<開始アドレス>:Javaフレームの最高位スタックアドレスが16進数で出力されます。
-
<終了アドレス>:JavaLockのある最高位スタックアドレスが16進数で出力されます。
-
<ユーザー時間>:スレッド開始からのユーザー時間がミリ秒単位で出力されます。
-
<カーネル時間>:スレッド開始からのカーネル時間がミリ秒単位で出力されます。
-
<ブロック回数>:スレッド開始から,処理がブロックされた回数が出力されます。
-
<待機回数>:スレッド開始から,処理が待ち状態になった回数が出力されます。
-
- <スレッドの現在のステータス>
-
スレッドの現在のステータスを表すメッセージが出力されます。メッセージの内容はjava.lang.Thread.State列挙型に対応します。
- <スタック開始アドレス>
-
スタック開始アドレスが16進数で出力されます。
- <YellowPageアドレス>
-
スタックYellowガードページ先頭アドレスが16進数で出力されます。
- <RedPageアドレス>
-
スタックRedガードページ先頭アドレスが16進数で出力されます。
- <スタック終了アドレス>
-
スタック終了アドレスが16進数で出力されます。
- <クラス名>
-
クラス名が出力されます。
- <メソッド名>
-
メソッド名が出力されます。
- <モジュール情報>
-
モジュール名がある場合にだけ,モジュール名とJDKのバージョンが出力されます。
- <メソッド情報>
-
次のメソッド情報が出力されます。
-
Native Method
ネイティブメソッドの場合に出力されます。
-
ファイル名:行番号
Javaメソッドで行番号付きでコンパイルされている場合に出力されます。
-
Unknown Source
Javaメソッドで行番号なしでコンパイルされている場合に出力されます。
-
- Javaモニタダンプ
Java monitor ------------ <ロックオブジェクト>@<ハッシュコード> <オーナー情報> <待機状態>:<待機スレッド数> <待機スレッド情報>
出力内容を説明します。
- <ロックオブジェクト>
-
ロック対象オブジェクトのクラス名が出力されます。
- <ハッシュコード>
-
Object.hashCodeで得られるハッシュコードが出力されます。
- <オーナー情報>
-
-
owner "<スレッド名>"<スレッドID>
オーナーがある場合に出力されます。
-
no owner
オーナーがない場合に出力されます。
-
- <待機状態>
-
-
... waiting to enter
メソッド実行待ちの場合に出力されます。
-
... waiting to be notified
通知待ちの場合に出力されます。
-
- <待機スレッド数>
-
スレッド数が出力されます。
- <待機スレッド情報>
-
「"<スレッド名>" <スレッドID>」の形式で出力されます。
- JNIグローバル参照数の情報
JNI Information --------------- JNI global references: <JNIグローバル参照数>
出力内容を説明します。
- <JNIグローバル参照数>
-
JavaVMが保持しているグローバル参照の数が出力されます。
- 注
-
JNIグローバル参照はJavaVMの内部でも再利用されるため,JNIがサポートするDeleteGlobalRef関数を発行してJNIグローバル参照を削除しても,数値は減少しません。また,NewGlobalRef関数を発行してJNIグローバル参照を新規作成しても,JavaVMが再利用したJNIグローバル参照を割り当てた場合は数値は増加しません。
Explicitヒープ情報およびExplicitメモリブロック情報
Explicit Heap Status -------------------- max <EH_MAX>, total <EH_TOTAL>, used <EH_USED>, garbage <EH_GARB> (<EH_PER1> used/max, <EH_PER2> \ used/total, <EH_PER3> garbage/used), <EM_NUMS> spaces exist Explicit Memories(<EM_MGR_PTR>) "<EM_NAME>" eid=<EID>(<EM_PTR>)/<EM_TYPE>, total <EM_TOTAL>, used <EM_USED>, garbage <EM_GARB> \ (<EM_PER1> used/total, <EM_PER2> garbage/used, <FL_BLOCKS> blocks) <EM_STAT> deployed objects ________________Size__Instances__FreeRatio__Class________________ <ISIZE> <INUM> <FRATIO> <CNAME> ... <AISIZE> <AINUM> total ...
注意事項を次に示します。
-
Explicitヒープ情報とExplicitメモリブロック情報の間には,空行が1行あります。
-
Explicitメモリブロック情報の出力順序(どのExplicitメモリブロックから出力するか)は未定義とします。
-
"<EM_NAME>"の前には,半角2文字分の空白があります。
-
deployed objectsの前には,半角4文字分の空白があります。
-
<ISIZE>は,_________________Size_の"e"に行末をそろえて記載しています。
-
<INUM>は,__Instancesの最後"s"に行末をそろえて記載しています。
-
<FRATIO>は,__FreeRatio__の"o"に行末をそろえて記載しています。
-
<CNAME>は,__Class________________ の最初から二つ目の"_"に行末をそろえて記載しています。
-
memory mapの前には,半角4文字分の空白があります。
-
最後の行には空行が1行あります。したがって,Explicitメモリブロックごとの出力の間には空行が1行あります。
フッタ
Full thread dump completed. EEE MMM dd hh:mm:ss yyyy※
- 注※
-
EEEは曜日,MMMは月,ddは日を表します。また,hhは時間,mmは分,ssは秒,yyyyは年(西暦)を表します。
拡張スレッドダンプ情報との比較を,次に示します。
出力情報 |
標準スレッドダンプ |
拡張スレッドダンプ |
---|---|---|
ヘッダ |
× |
○ |
システム設定 |
× |
○ |
動作環境 |
× |
○ |
メモリ情報(Windowsの場合だけ) |
× |
○ |
Javaヒープ情報 |
× |
○ |
JavaVM内部メモリマップ情報 |
× |
○ |
JavaVM内部メモリサイズ情報 |
× |
○ |
アプリケーション環境 |
× |
○ |
ライブラリ情報 |
× |
○ |
スレッド情報 |
○ |
○※1 |
Javaモニタダンプ |
× |
○ |
JNIグローバル参照数の情報 |
○ |
○ |
Explicitヒープ情報 |
× |
○ |
Explicitメモリブロック情報 |
× |
○ |
フッタ |
× |
○ |
スレッドダンプ出力先 |
標準出力 |
標準出力※2 JavaVMログファイル |
注意事項
-
環境変数JAVACOREDIRで指定したディレクトリへの出力に失敗した場合,カレントディレクトリに出力されます。
-
カレントディレクトリへの出力に失敗した場合,標準エラー出力に出力されます。なお,この場合,スレッドダンプは標準出力に出力されません。
-
次に示すオプションの[+|-]指定が「-」の場合,スレッド情報の一部が出力されないのでご注意ください。
オプション名称
出力されない情報
<ハッシュ値>
<ユーザー時間>,<カーネル時間>
<ブロック回数>,<待機回数>