Hitachi

 Hitachi Application Server V10 コマンドリファレンスWindows®用)


4.2.1 eheapprof

Explicitヒープ詳細情報付き拡張スレッドダンプの出力

書式

eheapprof [-i|-f] [-freeratio] -p プロセスID

格納先

Application Serverインストールディレクトリー\jdk\jre\bin\

機能

引数に指定したプロセスIDのjavaプロセスについて、Explicitヒープ詳細情報を含んだ拡張スレッドダンプを出力します。また、Explicitメモリーブロック内のオブジェクトの統計情報、およびExplicitメモリーブロックの解放率情報も拡張スレッドダンプに出力できます。

実行権限

引数のプロセスIDで指定するjavaプロセスと同一のユーザーで実行してください。

引数

-i

Explicitヒープ詳細情報付き拡張スレッドダンプの出力処理の実行を確認するメッセージが表示されます。表示されたメッセージに対してyまたはnを入力します。このとき、yを入力すると、Explicitヒープ詳細情報を含んだ拡張スレッドダンプが出力されます。nを入力すると、何も出力しないで処理を終了します。省略した場合、-fオプションが指定されないかぎり、このオプションは有効です。

-f

-iオプションを無効にします。省略した場合、-iオプションが有効になります。

-freeratio

Explicitメモリーブロックのオブジェクト解放率情報の出力を有効にして、拡張スレッドダンプを出力します。

このオプションを指定してeheapprofコマンドを実行すると、Java VMによって次の処理が実行され、オブジェクト解放率情報が取得されます。

  • FullGC

  • Explicitメモリーブロックの解放処理

これらの処理によって、アプリケーションの実行が数秒間止まるおそれがあるため、Explicitメモリーブロックのオブジェクト解放率情報は、システム開発時や業務停止時間中に出力することをお勧めします。

-p プロセスID

Explicitヒープ詳細情報を含んだ拡張スレッドダンプを出力するjavaプログラムのプロセスIDを指定します。

型:Integer

指定できる値を次に示します。

  • 04294967295

出力形式

「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

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

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メモリーブロックの初期化とほぼ同時に出力された場合や、Java VMが内部で生成したExplicitメモリーブロックの場合は、"NULL"が出力されることがあります。

EID

<const>

ExplicitメモリーブロックのIDが出力されます。

EM_PTR

<ptr>

Explicitメモリーブロック内部構造があるメモリーアドレスが出力されます。障害調査時などに利用します。

EM_TYPE

R|B|A

Explicitの種別が出力されます。

Rは、Application Serverの内部で利用されている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メモリーブロックには、「」が出力されます。

(凡例)

<const>K:正の自然数を表します。

<decimal>K:正の整数(小数点第1位まで)を表します。

<ptr>K:ポインター値を表します。

<letters>K:任意の文字または任意の文字列を表します。

注※1

オブジェクト統計情報は、eheapprofコマンドを実行している場合に出力されます。なお、オブジェクト統計情報には、実際に作成したサイズ、個数よりも多く、int型配列を示す"[I"が出力されることがあります。この場合、"[I"は、Explicitメモリーブロック内で使用されていないオブジェクトを示します。Explicitメモリーブロック内で使用されていないオブジェクトは、Java VMの内部処理でint型配列化されます。

注※2

オブジェクト解放率情報は、-freeratioオプションを指定したeheapprofコマンドを実行している場合に出力されます。

出力例

「Explicitメモリーブロック内のオブジェクト統計情報」および「Explicitメモリーブロックのオブジェクト解放率情報」が無効な場合

Explicit Heap Status
--------------------
 max 31415926K, total 213971K, used 205369K, garbage 1234K (1.1% used/max,
 96.2% used/total, 0.0% garbage/used), 3 spaces exist

 Explicit Memories(0x12345678)

 "EJBMgrData" eid=1(0x02f25610)/R, total 154272K, used 150176K, garbage 1234K
 (97.0% used/total, 1.2% garbage/used, 0 blocks) Enable

 "VJBStored" eid=3(0x02f25910)/B, total 54272K, used 50176K, garbage 0K (90.9%
 used/total, 0.0% garbage/used, 2 blocks) Enable

 "ExplicitMemory-2" eid=2(0x02f25700)/R, total 5427K, used 5017K, garbage 0K
 (92.1% used/total, 0.0% garbage/used, 0 blocks) Enable

「Explicitメモリーブロック内のオブジェクト統計情報」および「Explicitメモリーブロックのオブジェクト解放率情報」が有効な場合

Explicit Heap Status
--------------------
 max 31415926K, total 162816K, used 150528K, garbage 10004K (0.0% used/max,
 91.1% used/total, 6.6% garbage/used), 3 spaces exist
 
 Explicit Memories(0x12345678)

  "EJBMgrData" eid=1(0x02f25610)/R, total 54272K, used 50176K, garbage 0K
 (91.2% used/total, 0.0% garbage/used, 0 blocks) 
    deployed objects 
    ________________Size__Instances__FreeRatio__Class________________
                35234568      10648          - java.util.HashMap
                 5678900      10668          - [Ljava.util.HashMap$Entry;
                 4456788       7436          - java.util.HashMap$Entry
                 4321000        200          - java.util.WeakHashMap
                 1234568        190          - [Ljava.util.WeakHashMap$Entry;
                  454400          4          - java.util.WeakHashMap$Entry
                51380224      29146 total

  "VJBStored" eid=3(0x02f25910)/B, total 54272K, used 50176K, garbage 10004K
 (90.7% used/total, 19.9% garbage/used, 5 blocks) 
    deployed objects 
    ________________Size__Instances__FreeRatio__Class________________
                35234568      10648         49 java.util.HashMap
                 5678900      10668         43 [Ljava.util.HashMap$Entry;
                 4456788       7436         50 java.util.HashMap$Entry
                 4321000        200         32 java.util.WeakHashMap
                 1234568        190         45 [Ljava.util.WeakHashMap$Entry;
                  454400          4         22 java.util.WeakHashMap$Entry
                51380224      29146 total

  "ExplicitMemory-2" eid=2(0x02f25700)/B, total 54272K, used 50176K,  garbage
 0K (91.1% used/total, 0.0% garbage/used, 0 blocks) 
    deployed objects 
    ________________Size__Instances__FreeRatio__Class________________
                35234568      10648          - java.util.HashMap
                 5678900      10668          - [Ljava.util.HashMap$Entry;
                 4456788       7436          - java.util.HashMap$Entry
                 4321000        200          - java.util.WeakHashMap
                 1234568        190          - [Ljava.util.WeakHashMap$Entry;
                  454400          4          - java.util.WeakHashMap$Entry
                51380224      29146 total

戻り値

戻り値

説明

0

正常終了しました。

1

異常終了しました。

2

一定時間内にExplicitヒープ詳細情報を含んだ拡張スレッドダンプ出力処理終了の応答がありませんでした。

出力メッセージ

次のエラーメッセージまたは警告メッセージが出力された場合、Explicitヒープ詳細情報付き拡張スレッドダンプは出力されません。

項番

エラーメッセージ

説明

1

usage: eheapprof [-f|-i] [-freeratio] -p process-id

eheapprofコマンドへの引数の指定が間違っています。

2

eheapprof: illegal option -- オプション

eheapprofコマンドに指定したオプションが不正です。

3

プロセスID: Now processing previous request, this request canceled

eheapprofコマンドの引数に指定したプロセスIDに該当するプロセスが、現在Explicitヒープ詳細情報を出力しています。

4

プロセスID: Not owner

eheapprofコマンドの引数に指定したプロセスID0が指定されています。

5

eheapprof: can't create work file at temporary directory , this request canceled

一時ファイル用ディレクトリーに参照・書き込み権限がない場合、Explicitヒープ詳細情報付き拡張スレッドダンプを出力できません。Explicitヒープ詳細情報付き拡張スレッドダンプの出力要求はキャンセルされます。

6

eheapprof: can't get temporary directory, this request canceled

一時ファイル用ディレクトリーが取り出せない場合、Explicitヒープ詳細情報付き拡張スレッドダンプを出力できません。Explicitヒープ詳細情報付き拡張スレッドダンプの出力要求はキャンセルされます。

7

eheapprof: please delete 削除できなかったファイル名 in 削除できなかったファイルの絶対パス

eheapprofコマンドを終了したときに、内部ファイルを削除できませんでした。削除できなかったファイルの絶対パスにある、削除できなかったファイルを削除してください。

8

eheapprof: unexpected error occurred: エラー原因

eheapprofコマンド実行中に予期しないエラーが発生しました。エラー原因には、例えば下記のような表示がされます。

  • 作業用メモリー確保に失敗した場合

    malloc systemcall fail (errno=Y)

  • オブジェクトのクローズに失敗した場合

    close systemcall fail (errno=Y)

9

eheapprof: can't communicate with process プロセスID

eheapprofコマンドの引数に指定したプロセスIDに該当するプロセスに問題があり、通信処理でエラーが発生しているため通信できません。または、eheapprofコマンドの引数に指定したプロセスIDに該当するプロセスがありません。

10

プロセスID: Timeout occurred. Java process not responding

eheapprofコマンドの引数に指定したプロセスIDに該当するプロセスから、一定時間内にExplicitヒープ詳細情報出力処理終了の応答がありませんでした。

注意事項