Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 保守/移行編


9.6.2 参照関係情報出力機能で出力するクラス別統計情報

ここでは,参照関係情報出力機能で出力するクラス別統計情報の出力形式,出力項目および出力例について説明します。

〈この項の構成〉

(1) 出力形式と出力項目

参照関係情報出力機能で出力するクラス別統計情報の出力形式を次に示します。

(2) 出力例

参照関係情報出力機能で出力するクラス別統計情報の出力例を,次のソースを例にして説明します。

public class instance2 {
  public static void main(String args[]) {
    classA cls_a1 = new classA();    classA cls_a2 = 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();    classC cls_c4 = new classC();
    cls_a1.cls_a = cls_a2;    cls_a1.cls_b = cls_b1;
    cls_a1.cls_c = cls_c1;    cls_a2.cls_b = cls_b2;
    cls_b1.cls_c = cls_c2;    cls_b2.cls_c = cls_c3;
    cls_c1.cls_c = cls_c4;
    try {
      Thread.sleep(20000);
    } catch (Exception e) {}
  }
}
class classA {
  classA cls_a;
  classB cls_b;
  classC cls_c;
 
  classA() {
    classB cls_b;
  }
}
class classB {
  classC cls_c;
}
class classC {
  classC cls_c;
}

インスタンス構造を次の図に示します。

図9‒6 インスタンス構造(参照関係情報出力機能)

[図データ]

参照関係情報出力機能の出力結果を次の図に示します。この場合,jheapprofコマンドに引数「-class <クラス名>」を指定して実行します。

図9‒7 出力結果(参照関係情報出力機能)

[図データ]

classAのアドレスは,すべて同じアドレス(0x10766840)になっています。したがって,classAはすべて同じインスタンスであることがわかります。一方,(1)と(4)のclassBは,アドレスが異なっているので,別のインスタンスであることがわかります。

なお,GCの発生によってインスタンスのメモリ上の配置が変化します。そのため,アドレスおよび領域名称は,出力するたびに変化する場合があります。