Hitachi

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


4.2.5 jheapprof

クラス別統計情報付き拡張スレッドダンプの出力

書式

jheapprof [-i|-f] [-class クラス名] [-staticroot|-nostaticroot]
    [-explicit|-noexplicit] [-fullgc|-copygc|-nogc]
    [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo]
    [-rootobjectinfost ] -p プロセスID

格納先

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

機能

引数に指定したプロセスIDのjavaプロセスについて、クラス別統計情報を含んだ拡張スレッドダンプを出力します。

各クラスのインスタンスが持つメンバーの配下にあるすべてのインスタンスのサイズを、クラスごとに統計情報として拡張スレッドダンプに出力できます。クラス別統計情報を複数回出力すると、Javaオブジェクトのサイズの変化などを確認できます。これらの情報は、メモリーリークの検出などに利用できます。

実行権限

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

引数

-i

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

-f

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

-class クラス名

クラス名に指定したクラス(インスタンス)をメンバーに持つクラスの構造を、一覧にしてスレッドダンプ中に出力します。

-staticroot

staticフィールドを基点とした参照関係情報出力機能を有効にし、staticフィールドを基点とした参照関係情報を出力します。省略した場合、-nostaticrootオプションが有効になります。

このオプションの前提は、-classオプションです。-classオプションの指定がない場合、このオプションは無効になります。

なお、このオプションと-nostaticrootオプションを同時に指定している場合、最後に指定しているオプションが有効になります。

-nostaticroot

staticフィールドを基点とした参照関係情報出力機能を無効にします。

なお、このオプションと-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増加要因の基点オブジェクトリストに出力されます。

このオプションは、-rootobjectinfoオプションが有効であることが前提です。そのため、-norootobjectinfoオプションを有効にすると、このオプションは無効になります。には0以上の自然数を指定できます。自然数以外や、文字列を指定した場合は、引数の指定に誤りがあるという内容のエラーメッセージが出力されて終了します。

デフォルト値:0

-p プロセスID

プロセスIDには、クラス別統計情報を出力するjavaプログラムのプロセスIDを指定します。

型:Integer

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

  • 04294967295

出力形式

クラス別統計情報を拡張スレッドダンプに出力するには、jheapprofコマンドを利用します。クラス別統計情報を出力したいJavaプロセスや、参照関係情報を出力したいクラスを指定して、jheapprofコマンドを実行します。

jheapprofコマンド実行時には、次の指定ができます。

入力例

  1. -fオプションを省略してjheapprofコマンドを実行します。

    % jheapprof -p 2463

  2. クラス別統計情報付き拡張スレッドダンプを出力するかどうかの確認メッセージが表示されます。

    Force VM to output HitachiJavaHeapProfile: ? (y/n)

  3. クラス別統計情報付き拡張スレッドダンプを出力する場合はyを、出力しない場合はnを入力します。

    Force VM to output HitachiJavaHeapProfile: ? (y/n)y

  4. クラス別統計情報付き拡張スレッドダンプを出力すると、実行中のjavaプログラムでは次のメッセージが出力されます。

    Writing Java core to javacore2463.030806215140.txt... OK

  5. 実行中のjavaプログラムは、カレントディレクトリーにクラス別統計情報付き拡張スレッドダンプ(javacoreプロセスID.日時.txt)を作成し、プログラムを継続します。

戻り値

戻り値

説明

0

正常終了しました。

1

異常終了しました。

2

一定時間内にクラス別統計情報出力処理終了の応答がありませんでした。

出力メッセージ

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

項番

エラーメッセージ

説明

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コマンドの引数に指定したプロセスID0が指定されています。

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コマンド実行中に予期しないエラーが発生しました。

エラー原因には、例えば下記のような表示がされます。

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

    malloc systemcall fail (errno=Y)

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

    close systemcall fail (errno=Y)

9

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

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

10

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

jheapprofコマンドの引数に指定したプロセスIDに該当するプロセスから、一定時間内にクラス別統計出力処理終了の応答がありませんでした。

11

プロセスID: Failed to retry GC. Java process is GC locked.

jheapprofコマンドの引数に指定したプロセスIDのプロセスが、GC実行が抑止される状態のため、GC処理を実行できませんでした。

注意事項