-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けた)

スレッドダンプ情報の構成を,次に示します。

表19-3 スレッドダンプ情報の構成

出力情報内容
ヘッダ※1スレッドダンプを開始した日付および時刻,JavaVMバージョン情報,起動コマンドラインを出力します。
Explicitヒープ情報Explicitヒープ情報では,Explicitヒープ全体での利用状況を出力します。Explicitヒープ利用の有無にかかわらず,-XX:+HitachiUseExplicitMemoryが有効の場合は必ず出力されます。
Explicitメモリブロック情報Explicitメモリブロック情報では,xplicitメモリブロックごとの利用状況およびオブジェクト統計情報を出力します。Explicitメモリブロックが一つも存在しない場合は何も出力されません。
システム設定次の情報を出力します。
  • JDKの実行環境のインストールディレクトリ
  • JDKを構成するライブラリのインストールディレクトリ
  • システムクラスパス
  • Javaコマンドオプション
動作環境次の情報を出力します。
  • ホスト名
  • OSバージョン
  • CPU情報
  • リソース情報(UNIXの場合だけ)
メモリ情報Windowsの場合,次の情報を出力します。
  • メモリ使用状況
  • 物理メモリ使用状況
  • 仮想メモリ使用状況
  • ページング使用量
Javaヒープ情報Javaヒープの各世代のメモリ使用状況を出力します。
JavaVM内部メモリマップ情報JavaVM自身の確保しているメモリの領域情報を出力します。
JavaVM内部メモリサイズ情報JavaVM自身の確保しているメモリのサイズ情報を出力します。
アプリケーション情報次の情報を出力します。
  • シグナルハンドラ
  • 環境変数
  • カレントディレクトリ情報
ライブラリ情報ローディングされているライブラリの情報を出力します。
スレッド情報
<スレッド1>
:
<スレッドn>
スレッドごとにスレッド情報を出力します。現存する全スレッドのスタックトレースを出力します。
JavaモニタダンプJavaモニタオブジェクトの一覧を表示します。スレッド間の排他待ちの状況を確認できます。
Rawモニタダンプ※2Java内部で使われるモニタ情報の一覧を出力します。
JNIグローバル参照情報※3JavaVMが保持しているJNIのグローバル参照の数を出力します。
JNIグローバル参照は,次の場合に作成されます。
  • JavaVMが自身の起動や実行のために必要な場合。
  • JNIがサポートするNewGlobalRef関数を発行した場合。
フッタスレッドダンプを終了した日付および時刻を出力します。
注※1
Windowsの場合のコマンドライン出力について,JDK 5.0とJDK 6とでは異なります。

例   > java     HelloWorld

JDK 6の場合の出力例  :java     HelloWorld
JDK 5.0の場合の出力例:java HelloWorld

例   > java    "HelloWorld"

JDK 6の場合の出力例  :java    "HelloWorld"
JDK 5.0の場合の出力例:java HelloWorld

注※2
Rawモニタダンプは,ベースとなるJDKのバージョンがJDK 5.0の場合(対応バージョンが07-00,07-50,08-00および08-50)に出力されます。ベースとなるJDKのバージョンがJDK 6の場合(08-10および08-50)は出力されません。
注※3
JNIグローバル参照情報は,ベースとなるJDKのバージョンがJDK 5.0の場合(対応バージョンが07-00,07-50,08-00および08-50)は出力されません。ベースとなるJDKのバージョンがJDK 6の場合(対応バージョン08-10および08-50)は出力されます。

出力形式

ヘッダ

EEE MMM dd hh:mm:ss yyyy

Full thread dump Java HotSpot(TM) Client VM (1.5.0_05-b05-CDK0850-<ビルド日> mixed mode)
<起動コマンドライン>

注※
EEEは曜日,MMMは月,ddは日を表します。また,hhは時間,mmは分,ssは秒,yyyyは年(西暦)を表します。

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__Class________________
                <ISIZE>     <INUM> <CNAME>
                ...
               <AISIZE>    <AINUM> total
   memory map
    [<SEG_PTR1>,<SEG_PTR2>,<SEG_PTR3>] (total <SEG_TOLAL>, used <SEG_USED>)
    ...

注意事項を次に示します。

  • Explicitヒープ情報とExplicitメモリブロック情報の間には,空行が1行あります。
  • Explicitメモリブロック情報の出力順序(どのExplicitメモリブロックから出力するか)は未定義とします。
  • “<EM_NAME>”の前には,半角2文字分の空白があります。
  • deployed objectsの前には,半角4文字分の空白があります。
  • <ISIZE>は,_________________Size_の"e"に行末にそろえて記載しています。
  • <INUM>は,__Instancesの最後"s"に行末にそろえて記載しています。
  • <CNAME>は,__Class________________ の最初から二つ目の"_"に行末にそろえて記載しています。
  • memory mapの前には,半角4文字分の空白があります。
  • 最後の行には空行が1行あります。したがって,Explicitメモリブロックごとの出力の間には空行が1行あります。

システム設定

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ヒープ情報

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 [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <次の空きブロックの先頭アドレス>, <予約済み領域の末尾アドレス>)
compacting perm gen  max <最大の容量>, total <現在の容量>, used <使用中メモリ> (<最大の容量に対する使用率>% used/max, <現在の容量に対する使用率>% used/total)
                     [<領域先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>)
  the space <現在の容量>,  <使用率>% used [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <次の空きブロックの先頭アドレス>, <予約済み領域の末尾アドレス>)

容量およびメモリサイズの単位はキロバイトです。

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,HP-UX,Solarisの場合)

Loaded Libraries
----------------
<コマンド>
       text     :<開始アドレス>-<終了アドレス> (サイズ)
       data     :<開始アドレス>-<終了アドレス> (サイズ)
<ライブラリ>
       text     :<開始アドレス>-<終了アドレス> (サイズ)
       data     :<開始アドレス>-<終了アドレス> (サイズ)

スレッド情報

-----------
"<スレッド名>" <daemon> prio=<優先度> jid=<ハッシュ値> tid=<スレッドID> nid=<nativeID> <status> [開始アドレス...終了アドレス]
   java.lang.Thread.State: <スレッドの現在のステータス>
   stack=[<スタック開始アドレス>..<YellowPageアドレス>..<RedPageアドレス>..<スタック終了アドレス>]
   [user cpu time=<ユーザー時間>ms, kernel cpu time=<カーネル時間>ms] [blocked count=<ブロック回数>, waited count=<待機回数>]
        at <クラス名>.<メソッド名>(<メソッド情報>)

注※ <スレッドの現在のステータス>の情報は,JDK 6がベースの場合で,バージョンが08-10および08-50のときにだけ出力されます。
出力内容を説明します。
<スレッド名>
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進数で出力されます。
<クラス名>
クラス名が出力されます。
<メソッド名>
メソッド名が出力されます。
<メソッド情報>
次のメソッド情報が出力されます。
  • Native Method
    ネイティブメソッドの場合に出力されます。
  • ファイル名:行番号
    Javaメソッドで行番号付きでコンパイルされている場合に出力されます。
  • Unknown Source
    Javaメソッドで行番号なしでコンパイルされている場合に出力されます。
Javaモニタダンプ

Java monitor
------------
<ロックオブジェクト>@<ハッシュコード> <オーナー情報>
  <待機状態>:<待機スレッド数>
     <待機スレッド情報>

出力内容を説明します。
<ロックオブジェクト>
ロック対象オブジェクトのクラス名が出力されます。
<ハッシュコード>
Object.hashCodeで得られるハッシュコードが出力されます。
<オーナー情報>
  • owner "<スレッド名>"<スレッドID>
    オーナーがある場合に出力されます。
  • no owner
    オーナーがない場合に出力されます。
<待機状態>
  • ... waiting to enter
    メソッド実行待ちの場合に出力されます。
  • ... waiting to be notified
    通知待ちの場合に出力されます。
<待機スレッド数>
スレッド数が出力されます。
<待機スレッド情報>
「"<スレッド名>" <スレッドID>」の形式で出力されます。
Rawモニタダンプ

Raw monitor dump
----------------
<モニタ名称> <モニタアドレス> owner <オーナー情報>
  <待機状態>:<待機スレッド数>
     <待機スレッド情報>

バージョンが07-00,07-50,08-00および08-50の場合で,JDK 5.0のときにだけ出力されます。
出力内容を説明します。
<モニタ名称>
ロック対象モニタの名称が出力されます。
<モニタアドレス>
ロック対象モニタのアドレスが出力されます。
<オーナー情報>
  • owner "<スレッド名>"<スレッドID>
    オーナーがある場合に出力されます。
  • no owner
    オーナーがない場合に出力されます。
<待機状態>
  • ... waiting to enter
    synchronizedブロック/メソッド実行待ちの場合に出力されます。
  • ... waiting to be notified
    notify待ちの場合に出力されます。
<待機スレッド数>
スレッド数が出力されます。
<待機スレッド情報>
"<スレッド名>" <スレッドID>
JNIグローバル参照数の情報(JDK 6がベースの場合)

JNI Information
---------------
JNI global references: <JNIグローバル参照数>

出力内容を説明します。
<JNIグローバル参照数>
JavaVMが保持しているグローバル参照の数が出力されます。
JNIグローバル参照はJavaVMの内部でも再利用されるため,JNIがサポートするDeleteGlobalRef関数を発行してJNIグローバル参照を削除しても,数値は減少しません。また,NewGlobalRef関数を発行してJNIグローバル参照を新規作成しても,JavaVMが再利用したJNIグローバル参照を割り当てた場合は数値は増加しません。
フッタ

Full thread dump completed.   EEE MMM dd hh:mm:ss yyyy

注※
EEEは曜日,MMMは月,ddは日を表します。また,hhは時間,mmは分,ssは秒,yyyyは年(西暦)を表します。

拡張スレッドダンプ情報との比較を,次に示します。

表19-4 標準スレッドダンプと拡張スレッドダンプの出力情報の比較

出力情報標準スレッドダンプ拡張スレッドダンプ
ヘッダ×
システム設定×
動作環境×
メモリ情報(Windowsの場合だけ)×
Javaヒープ情報×
JavaVM内部メモリマップ情報×
JavaVM内部メモリサイズ情報×
アプリケーション環境×
ライブラリ情報×
スレッド情報※1
Javaモニタダンプ×
Rawモニタダンプ×※2
フッタ×
スレッドダンプ出力先標準出力標準出力※3
日立JavaVMログファイル
(凡例)
○:出力されます。
×:出力されません。
注※1
スタックの開始および終了のアドレス情報などが出力されます。
注※2
Raw monitorが使用された場合に出力されます。
注※3
-XX:+HitachiThreadDumpToStdoutオプションが指定された場合に出力されます。

注意事項