Cosminexus アプリケーションサーバ V8 機能解説 保守/移行/互換編
ここでは,参照関係情報出力機能で出力するクラス別統計情報の出力形式,出力項目および出力例について説明します。
参照関係情報出力機能で出力するクラス別統計情報の出力形式を次に示します。
Reference of class <オプション指定クラス名>
--------------------------------------------※
<クラス名>(<アドレス>)[<領域名称>]
<クラス名>(<アドレス>)[<領域名称>]
<オプション指定クラス名>(<アドレス>)[<領域名称>]
------
<クラス名>(<アドレス>)[<領域名称>]
java.lang.ref.Finalizer<<繰り返し数> times>
<クラス名>(<アドレス>)[<領域名称>]
<クラス名>(<アドレス>)[<領域名称>]
<オプション指定クラス名>(<アドレス>)[<領域名称>]
------
...
|
注※ <オプション指定クラス名>の文字数に19を加算した数の「-(ハイフン)」が出力されます。
出力形式で示した各項目について説明します。
表8-10 出力項目(参照関係情報出力機能)
| 出力項目 | 意味 |
|---|---|
| <クラス名> | jheapprofコマンドの-classオプションに指定したクラスのインスタンスが参照するクラスの名称が出力されます。 |
| <アドレス> | インスタンスのアドレスが出力されます。 |
| <領域名称> | インスタンスが所属する領域が出力されます。
|
| <オプション指定クラス名> | jheapprofコマンドの-classオプションに指定したクラス名が出力されます。 |
| java.lang.ref.Finalizer | finalize()メソッドを持つクラスで生成するjava.lang.ref.Finalizerのオブジェクトを一つにまとめて出力することを示します。 |
| <繰り返し数> | Finalizerインスタンスの参照が連続した回数が出力されます。 |
参照関係情報出力機能で出力するクラス別統計情報の出力例を,次のソースを例にして説明します。
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;
}
|
上記のソースの場合の,インスタンス構造を次の図に示します。
図8-6 インスタンス構造(参照関係情報出力機能)
参照関係情報出力機能の出力結果を次の図に示します。この場合,jheapprofコマンドに引数「-class <クラス名>」を指定して実行します。
図8-7 出力結果(参照関係情報出力機能)
classAのアドレスは,すべて同じアドレス(0x10766840)になっています。したがって,classAはすべて同じインスタンスであることがわかります。一方,(1)と(4)のclassBは,アドレスが異なっているので,別のインスタンスであることがわかります。
なお,ガーベージコレクションの発生によってインスタンスのメモリ上の配置が変化します。そのため,アドレスおよび領域名称は,出力するたびに変化する場合があります。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.