JavaVMのスレッドダンプを調査すると,システムのデッドロックなどのjavaプログラムレベルでのトラブル要因の調査が容易になります。
出力される情報の種類は,J2EEサーバの起動時に指定しているオプションによって異なります。JavaVMの資料取得の設定については,「3.3.19 JavaVMの資料取得の設定」を参照してください。
JavaVMのスレッドダンプ情報の構成を次の表に示します。
表5-22 スレッドダンプ情報の構成
出力情報 | 内容 |
---|---|
ヘッダ | 日付,JavaVMバージョン情報,起動コマンドラインを出力します。 |
システム設定 | 次の情報を出力します。
|
動作環境 | 次の情報を出力します。
|
メモリ情報(Windowsの場合) | 現在のメモリ使用量および各未使用サイズ情報を出力します。 |
Javaヒープ情報 | Javaヒープの各世代のメモリ使用状況を出力します。 |
JavaVM内部メモリマップ情報 | JavaVM自身の確保しているメモリの領域情報を出力します。 |
JavaVM内部メモリサイズ情報 | JavaVM自身の確保しているメモリのサイズ情報を出力します。 |
アプリケーション環境 | 次の情報を出力します。
|
ライブラリ情報 | ローディングされているライブラリの情報を出力します。 |
スレッド情報 <スレッド1> : <スレッドn> | スレッドごとにスレッド情報を出力します。 |
Javaモニタダンプ※ | Javaモニタオブジェクトの一覧を表示します。 |
JNIグローバル参照情報 | JavaVMが保持しているJNIのグローバル参照の数を出力します。 |
Explicitヒープ詳細情報 | 明示管理ヒープ機能使用時には,Javaプロセスのクラスごとに次の情報を出力します。
|
クラス別統計情報 | jheapprofコマンドで指定したJavaプロセスのクラスごとに次の情報を出力します。
|
フッタ | スレッドダンプが終了した時刻を表示します。 |
注※ UNIXの場合,notify待ちの一覧が表示されないことがあります。
JavaVMのスレッドダンプ情報の詳細については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「-XX:[+|-]HitachiThreadDump(拡張スレッドダンプ情報出力オプション)」を参照してください。なお,クラス別統計情報については,「9.3 クラス別統計機能」を参照してください。Explicitヒープ詳細情報については,「(3) Explicitヒープ詳細情報の出力内容」を参照してください。
J2EEアプリケーションやバッチアプリケーションでスローダウンやハングアップが発生した時に,スレッドダンプと性能解析トレースを対応づけることで,問題が発生した個所を調査できます。
スレッドダンプと性能解析トレースファイルの対応づけには,スレッドダンプに出力されたスレッド情報のnativeID(OSレベルのスレッドID)と性能解析トレースファイルに出力されたスレッドIDを使用します。スレッドダンプから対応する性能解析トレースファイルを特定する手順について説明します。
: |
: |
1124(16進数)=4388(10進数)
: |
6d75(16進数)=28021(10進数)
Explicitヒープ詳細情報には,Explicitヒープ情報およびExplicitメモリブロック情報が出力されます。Explicitメモリブロック情報は,Explicitメモリブロックが一つ以上ある場合に,その個数分出力されます。Explicitメモリブロック情報には,Explicitメモリブロック内のオブジェクト統計情報,およびExplicitメモリブロックの解放率情報も出力されます。
Explicitヒープ詳細情報の出力形式,出力項目および出力例を次に示します。
Explicit Heap Status |
注 出力形式で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
Explicit Heap Status |
注 出力形式で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
表5-23 出力項目(Explicitヒープ詳細情報)
分類 | 出力項目 | 出力内容 | 意味 |
---|---|---|---|
Explicitヒープ情報 | <EH_MAX> | <const>K | Explicitヒープの最大サイズが出力されます。単位はキロバイトです。 |
<EH_TOTAL> | <const>K | 確保済みExplicitヒープサイズが出力されます。単位はキロバイトです。 | |
<EH_USED> | <const>K | 利用済みExplicitヒープサイズが出力されます。単位はキロバイトです。 | |
<EH_GARB> | <const>K | Explicitヒープの内部状態が出力されます。 | |
<EH_PER1> | <decimal>% | Explicitヒープ利用率(<EH_USED>/<EH_MAX>)が%表記で出力されます。 | |
<EH_PER2> | <decimal>% | Explicitヒープ利用率(<EH_USED>/<EH_TOTAL>)が%表記で出力されます。 | |
<EH_PER3> | <decimal>% | Explicitヒープの内部状態が出力されます。 | |
<EM_NUMS> | <const> | 有効なExplicitメモリブロックの数が出力されます。 | |
<EM_MGR_PTR> | <ptr> | Explicitヒープ制御のための内部情報があるメモリアドレスが出力されます。障害調査時などに利用します。 | |
Explicitメモリブロック情報 | <EM_NAME> | <letters> | Explicitメモリブロックの名称が出力されます。 Explicitメモリブロックの名称に多バイト文字が含まれている場合,出力内容は不定です(通常は文字化けして出力されます)。 Explicitメモリブロックの初期化とほぼ同時に出力された場合や,JavaVMが内部で生成したExplicitメモリブロックの場合は,"NULL"が出力されることがあります。 |
<EID> | <const> | ExplicitメモリブロックのIDが出力されます。 | |
<EM_PTR> | <ptr> | Explicitメモリブロック内部構造があるメモリアドレスが出力されます。障害調査時などに利用します。 | |
<EM_TYPE> | R|B|A | Explicitの種別が出力されます。Rは,アプリケーションサーバの内部で利用されているExplicitメモリブロックを示します。Bは,アプリケーションが利用しているExplicitメモリブロックを示します。Aは,自動配置設定ファイルを使って指定したExplicitメモリブロックを示します。 | |
<EM_TOTAL> | <const>K | Explicitメモリブロックのメモリ確保済みサイズが出力されます。単位はキロバイトです。 | |
<EM_USED> | <const>K | Explicitメモリブロックの利用済みサイズが出力されます。単位はキロバイトです。 | |
<EM_GARB> | <const>K | Explicitメモリブロックの内部状態が出力されます。単位はキロバイトです。 | |
<EM_PER1> | <decimal>% | Explicitメモリブロック利用率(<EM_USED>/<EM_TOTAL>)が%表記で出力されます。 | |
<EM_PER2> | <decimal>% | Explicitメモリブロックの内部状態が出力されます。 | |
<FL_BLOCKS> | <const> | 常に0が出力されます。 | |
<EM_STAT> | Enable|Disable | Explicitメモリブロックのサブ状態が出力されます。 | |
オブジェクト統計情報※1 | <ISIZE> | <const> | あるクラスをインスタンス化したオブジェクトのExplicitメモリブロック内のサイズが出力されます。 |
<INUM> | <const> | あるクラスをインスタンス化したオブジェクトのExplicitメモリブロック内の個数が出力されます。 | |
<CNAME> | <letters> | <ISIZE>および<INUM>が示すクラスの完全クラス名が出力されます。 | |
<AISIZE> | <const> | Explicitメモリブロック内の全オブジェクトの合計サイズが出力されます。 | |
<AINUM> | <const> | Explicitメモリブロック内の全オブジェクトの個数が出力されます。 | |
オブジェクト解放率情報※2 | <FRATIO> | <decimal>% | Explicitメモリブロックの自動解放処理で解放されたオブジェクトの割合(オブジェクト解放率)が%表記で出力されます。 オブジェクト解放率= (自動解放処理前のクラスのオブジェクト数-自動解放処理後のクラスのオブジェクト数)/自動解放処理前のクラスのオブジェクト数×100 なお,オブジェクト解放率情報出力時に,自動解放処理の対象とならなかったExplicitメモリブロックには,「-」が出力されます。 |
注 出力内容で使用している記号については,「5.11.2(3) イベントログの出力形式の説明で使用する記号」を参照してください。
注※1 オブジェクト統計情報は,eheapprofコマンドを実行している場合に出力されます。なお,オブジェクト統計情報には,実際に作成したサイズ,個数よりも多く,int型配列を示す"[I"が出力されることがあります。この場合,"[I"は,Explicitメモリブロック内で使用されていないオブジェクトを示します。Explicitメモリブロック内で使用されていないオブジェクトは,JavaVMの内部処理でint型配列化されます。
注※2 オブジェクト解放率情報は,-freeratioオプションを指定したeheapprofコマンドを実行している場合に出力されます。
Explicit Heap Status |
Explicit Heap Status |