jhat - Java ヒープ解析ツール
jhat [ options ] <heap-dump-file>
パラメータ
- options
- オプションを使用する場合、コマンド名の直後に記述してください。
- heap-dump-file
- ブラウズ対象となる Java バイナリヒープダンプファイル。複数のヒープダンプを含むダンプファイルの場合、「foo.hprof#3」のようにファイル名の後に「#<number>」を付加することで、ファイル内の特定のダンプを指定できます。
jhat コマンドは、java ヒープダンプファイルを解析し、Web サーバーを起動します。jhat を使用すれば、使い慣れた Web ブラウザを使用してヒープダンプをブラウズできます。jhat は、「既知のクラス「Foo」のすべてのインスタンスを表示する」といった、事前に設計されたクエリーのほか、ヒープダンプをクエリーする SQL に似たクエリー言語である OQL(ObjectQueryLanguage) もサポートします。OQL のヘルプには、jhat によって表示される OQL ヘルプページからアクセスできます。デフォルトポートを使用する場合、OQL のヘルプは http://localhost:7000/oqlhelp/ で利用可能です。
Java のヒープダンプを生成するには、いくつかの方法があります。
- jmap の-dump オプションを使用して実行時にヒープダンプを取得する方法。
- jconsole のオプションを使用して HotSpotDiagnosticMXBean 経由で実行時にヒープダンプを取得する方法。
- -XX:+HeapDumpOnOutOfMemoryError VM オプションを指定すると、OutOfMemoryError のスロー時にヒープダンプが生成される。
- hprof を使用する方法。
注: このツールは試験的であり、将来の JDK のバージョンでは利用できなくなる可能性があります。
オプション
- -stack false/true
- オブジェクト割り当て呼び出しスタックの追跡を無効にします。ヒープダンプ内で割り当てサイト情報が使用できない場合、このフラグを false に設定する必要があります。デフォルトは true。
- -refs false/true
- オブジェクトへの参照の追跡を無効にします。デフォルトは true。デフォルトでは、ヒープ内のすべてのオブジェクトについて、バックポインタ (指定されたオブジェクトをポイントしているオブジェクト。参照者または受信参照とも呼ばれる) が計算されます。
- -port port-number
- jhat の HTTP サーバーのポートを設定します。デフォルトは 7000 です。
- -exclude exclude-file
- 「到達可能なオブジェクト」のクエリーから除外すべきデータメンバーの一覧を含むファイルを指定します。たとえば、このファイルに java.lang.String.value が含まれていた場合、特定のオブジェクト「o」から到達可能なオブジェクトのリストを計算する際に、java.lang.String.value フィールドに関連する参照パスが考慮されなくなります。
- -baseline baseline-dump-file
- ベースラインとなるヒープダンプを指定します。両方のヒープダンプ内で同じオブジェクト ID を持つオブジェクトは「新規ではない」としてマークされます。その他のオブジェクトは「新規」としてマークされます。これは、異なる 2 つのヒープダンプを比較する際に役立ちます。
- -debug int
- このツールのデバッグレベルを設定します。0 は「デバッグ出力なし」を意味します。より大きな値を設定すると、より冗長なモードになります。
- -version
- バージョン番号を報告したあと、終了します。
- -h
- ヘルプメッセージを出力して終了します。
- -help
- ヘルプメッセージを出力して終了します。
- -J<flag>
- jhat が実行されている Java 仮想マシンに <flag> を渡します。たとえば、512M バイトの最大ヒープサイズを使用するには、-J-Xmx512m とします。