9.3.3 クラス別統計情報の出力
ここでは,クラス別統計情報を出力する方法について説明します。
クラス別統計情報を拡張スレッドダンプに出力するには,jheapprofコマンドを利用します。クラス別統計情報を出力したいJavaプロセスや,参照関係情報を出力したいクラスを指定して,jheapprofコマンドを実行します。
jheapprofコマンド実行時には,次の指定ができます。
-
クラス別統計情報にExplicitヒープの情報を出力するかどうかの指定
-
クラス別統計情報を取得する前にGCを実行するかどうかの指定
次に,jheapprofコマンドの実行形式と実行例,および各指定方法について説明します。
(1) jheapprofコマンドの実行形式と実行例
jheapprofコマンドの実行形式と実行例を次に示します。jheapprofコマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「jheapprof(クラス別統計情報付き拡張スレッドダンプの出力)」を参照してください。
- 実行形式
-
-
Windowsの場合
jheapprof [-f|-i] [-explicit|-noexplicit] [-class <クラス名>] [-fullgc|-copygc|-nogc] [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo] [-rootobjectinfost <サイズ>] -p <プロセスID>
-
UNIXの場合
jheapprof [-f|-i] [-explicit|-noexplicit] [-class <クラス名>] [-fullgc|-copygc|-nogc] [-garbage|-nogarbage] [-rootobjectinfo|-norootobjectinfo] [-rootobjectinfost <サイズ>] [-force] -p <プロセスID>
-
- 実行例
-
ここでは,プロセスIDが2463のJavaプロセスのクラス別統計情報を出力します。
-
-pオプションに,クラス別統計情報を出力したいJavaプロセスのプロセスIDを指定して,jheapprofコマンドを実行します。
% jheapprof -p 2463
jheapprofコマンドで-fオプションを省略している場合,次の確認メッセージが表示されます。
- Windowsの場合
-
クラス別統計情報付き拡張スレッドダンプを出力するかどうかを確認するメッセージが次の形式で表示されます。
Force VM to output HitachiJavaHeapProfile: ? (y/n)
- UNIXの場合
-
プロセスIDを確認するメッセージが次の形式で表示されます。
send SIGQUIT to 2463: ? (y/n)
-
yを入力します。
クラス別統計情報付き拡張スレッドダンプが出力されます。実行中のjavaプログラムでは次のメッセージが出力されます。
Writing Java core to javacore2463.030806215140.txt... OK
実行中のjavaプログラムは,カレントディレクトリにクラス別統計情報付き拡張スレッドダンプ(javacore<プロセスID>.<日時>.txt)を作成し,プログラムを継続します。
(2) Explicitヒープの情報をクラス別統計情報に出力する場合
次の条件を満たしている場合,Explicitヒープの情報をクラス別統計情報に出力できます。
-
JavaVM起動オプションに-XX:+HitachiUseExplicitMemoryを指定している。
-
アプリケーションの実装,または実行環境(J2EEサーバ)の設定でExplicitヒープが使用されている。
Explicitヒープの情報をクラス別統計情報に出力する場合は,jheapprofコマンドに-explicitオプションを指定して実行します。
明示管理ヒープ機能については,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「7. 明示管理ヒープ機能を使用したFullGCの抑止」を参照してください。
(3) GCの実行有無を指定する場合
クラス別統計情報を出力する前に,GCを実行するかどうかを選択できます。この機能を統計前のGC選択機能といいます。クラス別統計情報を出力する前に,GCを実行するかどうかは,jheapprofコマンドに次のどれかのオプションを指定して実行します。
-
-fullgc
FullGCを実行してから,クラス別統計情報を出力します。
-
-copygc
CopyGCを実行してから,クラス別統計情報を出力します。
-
-nogc
GCを実行しないで,クラス別統計情報を出力します。
統計前のGC選択機能については,「9.7 統計前のGC選択機能」を参照してください。なお,Tenured領域内不要オブジェクト統計機能を実行する場合,統計前のGC選択機能は実行できません。