Hitachi

Cosminexus V11 アプリケーションサーバ リファレンス 定義編(サーバ定義)


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

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

表14‒3 スレッドダンプ情報の構成

出力情報

内容

ヘッダ

スレッドダンプを開始した日付および時刻,JavaVMバージョン情報,起動コマンドラインを出力します。

システム設定

次の情報を出力します。

  • JDKの実行環境のインストールディレクトリ

  • JDKを構成するライブラリのインストールディレクトリ

  • システムクラスパス

  • Javaコマンドオプション

動作環境

次の情報を出力します。

  • ホスト名

  • OSバージョン

  • CPU情報

  • リソース情報(UNIXの場合だけ)

メモリ情報

Windowsの場合,次の情報を出力します。

  • メモリ使用状況

  • 物理メモリ使用状況

  • 仮想メモリ使用状況

  • ページング使用量

Javaヒープ情報

Javaヒープの各世代のメモリ使用状況を出力します。

JavaVM内部メモリマップ情報

JavaVM自身の確保しているメモリの領域情報を出力します。

JavaVM内部メモリサイズ情報

JavaVM自身の確保しているメモリのサイズ情報を出力します。

アプリケーション情報

次の情報を出力します。

  • シグナルハンドラ

  • 環境変数

  • カレントディレクトリ情報

ライブラリ情報

ローディングされているライブラリの情報を出力します。

スレッド情報

<スレッド1>

:

<スレッドn>

スレッドごとにスレッド情報を出力します。現存する全スレッドのスタックトレースを出力します。

Javaモニタダンプ

Javaモニタオブジェクトの一覧を表示します。スレッド間の排他待ちの状況を確認できます。

JNIグローバル参照情報

JavaVMが保持しているJNIのグローバル参照の数を出力します。

JNIグローバル参照は,次の場合に作成されます。

  • JavaVMが自身の起動や実行のために必要な場合。

  • JNIがサポートするNewGlobalRef関数を発行した場合。

Explicitヒープ情報

Explicitヒープ情報では,Explicitヒープ全体での利用状況を出力します。Explicitヒープ利用の有無にかかわらないで,-XX:+HitachiUseExplicitMemoryが有効の場合は必ず出力されます。

Explicitメモリブロック情報

Explicitメモリブロック情報では,次の情報を出力します。ただし,Explicitメモリブロックが1つも存在しない場合は何も出力されません。

  • Explicitメモリブロックごとの利用状況

  • オブジェクト統計情報(eheapprofコマンド実行時に出力)

  • オブジェクト解放率情報(-freeratioオプションを指定したeheapprofコマンド実行時に出力)

フッタ

スレッドダンプを終了した日付および時刻を出力します。

注※ UNIXの場合,notify待ちの一覧が表示されない場合があります。

出力形式

ヘッダ

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を使用している場合)

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ヒープ情報(G1GCを使用している場合)

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)
                [<領域先頭アドレス>, <使用中領域の先頭アドレス>, <コミット済み領域の末尾アドレス>, <予約済み領域の末尾アドレス>)

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: <スレッドの現在のステータス>
    stack=[<スタック開始アドレス>..<YellowPageアドレス>..<RedPageアドレス>..<スタック終了アドレス>]
    [user cpu time=<ユーザー時間>ms, kernel cpu time=<カーネル時間>ms] [blocked count=<ブロック回数>, waited count=<待機回数>]
         at <クラス名>.<メソッド名>(<メソッド情報>)
…

注※ <スレッドの現在のステータス>の情報は,JDK 6がベースの場合で,バージョンが08-10以降のときにだけ出力されます。

出力内容を説明します。

<スレッド名>

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>」の形式で出力されます。

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
...

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

フッタ

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

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

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

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

出力情報

標準スレッドダンプ

拡張スレッドダンプ

ヘッダ

×

システム設定

×

動作環境

×

メモリ情報(Windowsの場合だけ)

×

Javaヒープ情報

×

JavaVM内部メモリマップ情報

×

JavaVM内部メモリサイズ情報

×

アプリケーション環境

×

ライブラリ情報

×

スレッド情報

※1

Javaモニタダンプ

×

JNIグローバル参照数の情報

Explicitヒープ情報

×

Explicitメモリブロック情報

×

フッタ

×

スレッドダンプ出力先

標準出力

標準出力※2

JavaVMログファイル

(凡例)

○:出力されます。

×:出力されません。

注※1

スタックの開始および終了のアドレス情報などが出力されます。

注※2

-XX:+HitachiThreadDumpToStdoutオプションが指定された場合に出力されます。

注意事項