9.6.3 staticフィールドを基点とした参照関係情報出力機能で出力するクラス別統計情報
ここでは,staticフィールドを基点とした参照関係情報出力機能で出力するクラス別統計情報の出力形式,出力項目および出力例について説明します。
- 〈この項の構成〉
(1) 出力形式と出力項目
-
出力形式
staticフィールドを基点とした参照関係情報出力機能で出力するクラス別統計情報の出力形式を次に示します。
Reference of class <オプション指定クラス名> from static field -------------------------------------------------------------※1 static field <staticフィールド宣言クラス名>※2.<staticフィールド名>※2 <クラス名>(<アドレス>)[<領域名称>] <クラス名>(<アドレス>)[<領域名称>] <オプション指定クラス名>(<アドレス>)[<領域名称>] ------ ...
- 注※1
-
<オプション指定クラス名>の文字数に37を加算した数の「-(ハイフン)」が出力されます。
- 注※2
-
参照関係の基点を示します。
-
出力項目
出力形式で示した各項目について説明します。
表9‒11 出力項目(staticフィールドを基点とした参照関係情報出力機能) 出力項目
意味
<staticフィールド宣言クラス名>
基点となるstaticフィールドを宣言しているクラス名が出力されます。
<staticフィールド名>
基点となるstaticフィールドの名称が出力されます。
<クラス名>
jheapprofコマンドの-classオプションに指定したクラスのインスタンスを参照する,インスタンスのクラスの名称が出力されます。
<アドレス>
インスタンスのアドレスが出力されます。
<領域名称>
インスタンスが所属する領域が出力されます。
-
Eden:Eden領域を示します。
-
Survivor:Survivor領域を示します。
-
Tenured:Tenured領域を示します。
-
EM(eid=<id>):Explicitメモリブロックを示します。
<オプション指定クラス名>
jheapprofコマンドの-classオプションに指定したクラス名が出力されます。
-
(2) 出力例
staticフィールドを基点とした参照関係情報出力機能で出力するクラス別統計情報の出力例を,次のソースを例にして説明します。
import JP.co.Hitachi.soft.jvm.MemoryArea.*; public class static_reference { public static void main(String args[]) { try { classA cls_a1 = new classA(); classB cls_b1 = new classB(); classB cls_b2 = new classB(); classC cls_c1 = new classC(); classC cls_c2 = new classC(); classC cls_c3 = new classC(); BasicExplicitMemory emem = new BasicExplicitMemory(); classC cls_c4 = (classC)emem.newInstance(classC.class); cls_a1.s_cls_a = cls_a1; cls_a1.s_cls_b = cls_b1; cls_a1.s_cls_c = cls_c1; cls_a1.cls_b = cls_b2; cls_b1.cls_c = cls_c2; cls_b2.cls_c = cls_c3; cls_c1.cls_c = cls_c4; Thread.sleep(20000); } catch (Exception e) {e.printStackTrace();} } } class classA { static classA s_cls_a; static classB s_cls_b; static classC s_cls_c; classB cls_b; } class classB { classC cls_c; } class classC { classC cls_c; public classC(){ } }
インスタンス構造を次の図に示します。
staticフィールドを基点とした参照関係情報出力機能の出力結果を次の図に示します。この場合,jheapprofコマンドに引数「-class <クラス名> -staticroot」を指定して実行します。