以下のオプションを指定したJavaプロセスに対してスレッドダンプ出力の操作を行った場合、スレッドダンプの出力に続いて、Javaヒープ内に生存する各クラスのインスタンス情報が「クラスのインスタンス情報の出力形式」の形式で出力されます。FJVMでは、当該機能を「クラスのインスタンス情報出力機能」として実装しています。
クラスのインスタンス情報として、クラス毎のインスタンス数および合計サイズが出力されるため、Javaヒープ内におけるメモリリークなどの調査で利用することができます。
クラスのインスタンス情報の出力先は、標準出力です。クラスのインスタンス情報が出力される契機および出力先は、“9.5.3 スレッドダンプ”が出力される契機および出力先と同じです。
なお、-Xloggcオプションの指定がある場合は、クラスのインスタンス情報の出力先が標準出力から-Xloggcオプションで指定したファイルへ切り替わります。
スレッドダンプに続いて、クラスのインスタンス情報を出力する機能を有効にするオプション
-XX:+PrintClassHistogram |
クラスのインスタンス情報の出力形式
num #instances #bytes class name ---------------------------------------------- $1: $2 $3 $4 : (略) : Total $5 $6
順位:クラスのインスタンス情報は、各クラスのインスタンスの合計サイズが大きい順に、ソートされて出力されます。
クラスのインスタンス数
クラスのインスタンスの合計サイズ
クラス名
$2の値の合計
$3の値の合計
注意
クラスのインスタンス情報出力機能では、不要なインスタンスを排除した後の情報を採取・出力します。そのため、事前処理としてFullGCを実行します。クラスのインスタンス情報出力の過度の使用は、FullGCの多発となるので注意してください。
注意
クラスのインスタンス情報出力に先立って行われるはずのFullGCが、ガーベジコレクション処理の実行抑止により実行できない状態にある場合は、以下のメッセージを標準出力へ出力した後、クラスのインスタンス情報出力の要求は取り消されます。
The PrintClassHistogram operation was canceled because GC could not be run. |