jheapprof(クラス別統計情報付き拡張スレッドダンプの出力)
形式
jheapprof [-i|-f] [-class <クラス名>] [-staticroot|-nostaticroot] [-explicit|-noexplicit] [-fullgc|-copygc|-nogc] [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo] [-rootobjectinfost <値> ] [-force] -p <プロセスID>
機能
引数に指定したプロセスIDのjavaプロセスについて,クラス別統計情報を含んだ拡張スレッドダンプを出力します。
引数
- -i
-
クラス別統計情報付き拡張スレッドダンプの出力処理の実行を確認するメッセージが表示されます。表示されたメッセージに対してyまたはnを入力します。このとき,yを入力すると,クラス別統計情報を含んだ拡張スレッドダンプが出力されます。nを入力すると,何も出力しないで処理を終了します。省略した場合,-fオプションが指定されないかぎり,このオプションは有効です。
- -f
-
-iオプションを無効にします。省略した場合,-iオプションが有効になります。
- -class <クラス名>
-
<クラス名>に指定したクラス(インスタンス)をメンバに持つクラスの構造を一覧にしてスレッドダンプ中に出力します。
- -staticroot
-
staticフィールドを基点とした参照関係情報出力機能を有効にし,staticフィールドを基点とした参照関係情報を出力します。省略した場合,-nostaticrootオプションが指定されない限り,このオプションは有効です。
このオプションの前提は,-classオプションです。-classオプションの指定がない場合,このオプションは無効になります。
なお,このオプションとnostaticrootオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -nostaticroot
-
staticフィールドを基点とした参照関係情報出力機能を無効にします。省略した場合,-staticrootオプションが有効になります。
なお,このオプションと-staticrootオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -explicit
-
インスタンス統計機能の統計対象にExplicitヒープを含めます。省略した場合,-noexplicitオプションが指定されないかぎり,このオプションは有効です。なお,このオプションと-noexplicitオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -noexplicit
-
インスタンス統計機能の統計対象にExplicitヒープを含めません。省略した場合,-explicitオプションが有効になります。なお,このオプションと-explicitオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -fullgc
-
統計する前に実行するGCにFullGCを設定します。省略した場合,-copygcオプションや-nogcオプションが指定されないかぎり,このオプションは有効です。なお,このオプションと-copygcオプションまたは-nogcオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -copygc
-
統計する前に実行するGCにCopyGCを設定します。このオプションと-nogcオプションを省略した場合,-fullgcオプションが有効になります。
なお,このオプションと-fullgcオプションまたは-nogcオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -nogc
-
統計する前にGCを実行しません。このオプションと-copygcオプションを省略した場合,-fullgcオプションが有効になります。なお,このオプションと-fullgcオプションまたは-copygcオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -garbage
-
Tenured領域内不要オブジェクト統計機能が有効になり,Tenured領域内の不要なオブジェクトを統計対象としたクラス別統計情報を出力します。また,インスタンス統計機能とSTATICメンバ統計機能は無効になります。省略した場合,-nogarbageオプションが有効になります。統計前GC選択機能については,-fullgcオプション,-copygcオプションが無効になり,-nogcオプションは有効になります。このため,統計処理前にGCを実行しません。なお,このオプションと-nogarbage オプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -nogarbage
-
Tenured領域内不要オブジェクト統計機能が無効になります。そのため,Tenured領域内の不要なオブジェクトを統計対象としたクラス別統計情報は出力しません。省略した場合,-garbageオプションが指定されないかぎり,このオプションは有効です。なお,このオプションと-garbageオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -rootobjectinfo
-
Tenured増加要因の基点オブジェクトリスト出力機能が有効になり,Tenured増加要因の基点オブジェクトリストを出力します。
このオプションは,-garbageオプションが有効であることが前提です。そのため,-nogarbageオプションを有効にすると,このオプションは無効になります。省略した場合,-norootobjectinfoオプションが指定されないかぎり,このオプションは有効です。なお,このオプションと-norootobjectinfoオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -norootobjectinfo
-
Tenured増加要因の基点オブジェクトリスト出力機能が無効になります。そのため,Tenured増加要因の基点オブジェクトリストは出力しません。省略した場合,-rootobjectinfoオプションが有効になります。なお,このオプションと-rootobjectinfoオプションを同時に指定している場合,最後に指定しているオプションが有効になります。
- -rootobjectinfost <値>
-
Tenured増加要因の基点オブジェクトリストの情報量を調節します。インスタンスサイズの合計が,指定した<値>以上のクラス情報だけが,Tenured増加要因の基点オブジェクトリストに出力されます。省略した場合,0が設定されます。
このオプションは,-rootobjectinfoオプションが有効であることが前提です。そのため,-norootobjectinfoオプションを有効にすると,このオプションは無効になります。<値>には0以上の自然数を指定できます。自然数以外や,文字列を指定した場合は,引数の指定に誤りがあるという内容のエラーメッセージが出力されて終了します。
- -force
-
javaプロセスが作成する/tmp/hsperfdata_<ユーザ名>/<プロセスID>ファイルの有無の確認をしないで,-pオプションで指定したプロセスIDのjavaプロセスに対して拡張スレッドダンプの出力を要求します。
なお,このオプションはUNIX用のオプションです。
- -p <プロセスID>
-
<プロセスID>には,クラス別統計情報を出力するjavaプログラムのプロセスIDを指定します。
戻り値
- 0:
-
正常終了しました。
- 1:
-
異常終了しました。
- 2:
-
一定時間内にクラス別統計情報出力処理終了の応答がありませんでした。
入力例
-
-fオプションを省略してjheapprofコマンドを実行します。
% jheapprof -p 2463
-
Windowsの場合,クラス別統計情報付き拡張スレッドダンプを出力するかどうかの確認メッセージが表示されます。UNIXの場合,プロセスIDの確認メッセージが表示されます。
-
Windowsの場合
Force VM to output HitachiJavaHeapProfile: ? (y/n)
-
UNIXの場合
send SIGQUIT to 2463: ? (y/n)
-
-
Windowsの場合,クラス別統計情報付き拡張スレッドダンプを出力する場合はyを,出力しない場合はnを入力します。UNIXの場合,SIGQUITシグナルを送信させる場合はyを,送信させない場合はnを入力します。
-
Windowsの場合
Force VM to output HitachiJavaHeapProfile: ? (y/n)y
-
UNIXの場合
send SIGQUIT to 2463: ? (y/n)y
-
-
クラス別統計情報付き拡張スレッドダンプを出力すると,実行中のjavaプログラムでは次のメッセージが出力されます。
Writing Java core to javacore2463.030806215140.txt... OK
-
実行中のjavaプログラムは,カレントディレクトリにクラス別統計情報付き拡張スレッドダンプ(javacore<プロセスID>.<日時>.txt)を作成し,プログラムを継続します。
出力形式
クラス別統計情報の出力形式については,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「9.10 クラス別統計情報解析機能」を参照してください。
出力メッセージ
次のエラーメッセージまたは警告メッセージが出力された場合,クラス別統計情報付き拡張スレッドダンプは出力されません。
項番 |
エラーメッセージ |
説明 |
---|---|---|
1 |
usage: jheapprof [-f|-i] [-class classname] [-staticroot|-nostaticroot] [-explicit|-noexplicit] [-fullgc|-copygc|-nogc] [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo] [-rootobjectinfost size] -p process-id |
jheapprofコマンドへの引数の指定が間違っています。 |
2 |
jheapprof: illegal option -- <オプション> |
jheapprofコマンドに指定した<オプション>が不正です。 |
3 |
<プロセスID>: Now processing previous request, this request canceled |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスが,クラス別統計情報の出力中です。 |
4 |
<プロセスID>: Not owner |
jheapprofコマンドの引数に指定した<プロセスID>に0が指定されています。 |
5 |
jheapprof: can't create work file at temporary directory , this request canceled |
一時ファイル用ディレクトリに参照・書き込み権限がない場合,クラス別統計情報付き拡張スレッドダンプを出力できません。クラス別統計情報付き拡張スレッドダンプの出力要求はキャンセルされます。 |
6 |
jheapprof: can't get temporary directory, this request canceled |
一時ファイル用ディレクトリが取り出せない場合,クラス別統計情報付き拡張スレッドダンプを出力できません。クラス別統計情報付き拡張スレッドダンプの出力要求はキャンセルされます。 |
7 |
jheapprof: please delete <削除できなかったファイル名> in <削除できなかったファイルのフルパス> |
jheapprofコマンドを終了したときに,内部ファイルを削除できませんでした。削除できなかったファイルのフルパスにある,削除できなかったファイルを削除してください。 |
8 |
jheapprof: unexpected error occurred: <エラー原因> |
jheapprofコマンド実行中に予期しないエラーが発生しました。 <エラー原因>には,例えば下記のような表示がされます。
|
9 |
jheapprof: can't communicate with process <プロセスID> |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスに問題があり,通信処理でエラーが発生しているため通信できません。または,jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスがありません。 |
10 |
<プロセスID>: Timeout occurred. Java process not responding |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスから,一定時間内にクラス別統計出力処理終了の応答がありませんでした。 |
項番 |
エラーメッセージ |
説明 |
---|---|---|
1 |
usage: jheapprof [-f|-i] [-class classname] [-staticroot|-nostaticroot] [-explicit|-noexplicit] [-fullgc|-copygc|-nogc] [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo] [-rootobjectinfost size] [-force] -p process-id |
jheapprofコマンドへの引数の指定が間違っています。 |
2 |
jheapprof: illegal option -- <オプション> |
jheapprofコマンドに指定した<オプション>が不正です。 |
3 |
<プロセスID>: Now processing previous request, this request canceled |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスが現在クラス別統計情報の出力中です。 |
4 |
<プロセスID>: No such process |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスがありません。または,jheapprofコマンドで指定した<プロセスID>に該当するプロセスがjavaプロセス以外でした。 |
5 |
<プロセスID>: Not owner |
jheapprofコマンドの引数に指定した<プロセスID>のプロセスのオーナーではありません。 |
6 |
jheapprof: can't create work file at /tmp , this request canceled |
一時ファイル用ディレクトリに参照・書き込み権限がない場合,クラス別統計情報付き拡張スレッドダンプを出力できません。クラス別統計情報付き拡張スレッドダンプの出力要求はキャンセルされます。 |
7 |
jheapprof: please delete <削除できなかったファイル名> in <削除できなかったファイルのフルパス> |
jheapprofコマンドを終了したときに,内部ファイルを削除できませんでした。削除できなかったファイルのフルパスにある,削除できなかったファイルを削除してください。 |
8 |
jheapprof: unexpected error occurred: <エラー原因> |
jheapprofコマンド実行中に予期しないエラーが発生しました。 <エラー原因>には,例えば下記のような表示がされます。
|
9 |
<プロセスID>: Timeout occurred. Java process not responding |
jheapprofコマンドの引数に指定した<プロセスID>に該当するプロセスから,一定時間内にクラス別統計情報出力処理終了の応答がありませんでした。 |
注意事項
-
jheapprofコマンドはプログラムの開発用ユーティリティとして提供されているものです。システムの運用では使用しないでください。
-
同じjavaプロセスに対して,同時にjheapprofコマンドは実行できません。前回のjheapprofコマンドによるクラス別統計情報が拡張スレッドダンプに出力されたあとに実行してください。
-
Windowsの場合,Javaプロセスは起動時にMailSlotを使った通信の初期化処理を実行します。初期化に失敗した場合,メッセージを出力して処理を中断します。
-
Windowsの場合,引数に指定したプロセスIDのjavaプロセス所有者以外でもjheapprofコマンドを実行できます。
-
UNIXの場合,引数に指定したプロセスIDのjavaプロセスオーナーでないユーザがこのコマンドを実行すると,メッセージが出力されて,処理は終了します。ただし,ユーザがrootである場合は,処理を継続します。
-
UNIXの場合,jheapprofコマンドは,SIGQUITシグナルを指定されたプロセスに送信します。誤ってjavaプログラム以外を指定すると,ほかのプログラムが停止することがあります。
-
UNIXの場合,jheapprofコマンド実行時に,/tmp/hsperfdata_<ユーザ名>/<プロセスID>ファイルを使用します。該当するファイルが存在しない場合,jheapprofコマンドによるクラス別統計情報出力はできません。
-
Explicitヒープをインスタンス統計情報の統計対象に含めるためには,-XX:+HitachiUseExplicitMemoryを指定して,明示管理ヒープ機能を有効にしているjavaプロセスに対して,jheapprofコマンドで-explicitオプションを指定してください。なお,-XX:-HitachiUseExplicitMemoryを指定して,明示管理ヒープ機能を無効にしている場合,-explicitを指定してもExplicitヒープ内のインスタンスはインスタンス統計情報の統計対象になりません。
-
G1GCを使用中にjheapprofコマンドを使用した場合,次のエラーメッセージを出力してスレッドダンプを出力しません。
jheapprof: can't use jheapprof and g1gc at the same time.
-
クラス別統計情報を取得するため,jheapprofコマンド実行中のjavaプロセスは,他の処理をすべて停止して処理を実行します。