9.9.1 Tenured増加要因の基点オブジェクトリスト出力機能の概要
Tenured増加要因の基点オブジェクトリスト出力機能では,Tenured領域内不要オブジェクト統計機能を使って特定した,不要なオブジェクトの基点となるオブジェクトの情報をリストにしてスレッドダンプファイルに出力します。
また,Tenured増加要因の基点オブジェクトリスト出力機能は,Tenured領域内不要オブジェクト統計機能が前提になります。
- ポイント
-
Tenured増加要因の基点オブジェクトリスト出力機能を使って取得した情報は,明示管理ヒープ機能を使用する場合に指定する,自動配置設定ファイルに指定できます。自動配置設定ファイルを使った明示管理ヒープの使用については,マニュアル「アプリケーションサーバ 機能解説 拡張編」の「7.13.2 自動配置設定ファイルを使った明示管理ヒープ機能の使用」を参照してください。
Tenured増加要因の基点オブジェクトリスト出力機能の仕組みについて説明します。
(1) 基点となるオブジェクトのリスト出力
Tenured増加要因の基点オブジェクトリスト出力機能は,Tenured領域内不要オブジェクト統計機能の処理のあとに続けて実行されます。Tenured領域内不要オブジェクト統計機能で実行する処理については,「9.8.1 Tenured領域内不要オブジェクト統計機能の概要」を参照してください。
Tenured増加要因の基点オブジェクトリスト出力機能は,Tenured領域内のアドレスの低い順にオブジェクトを検索します。検索したオブジェクトの中で,すでに参照関係で調べられているオブジェクト,および不要なオブジェクトのクラス情報を取得して,出力候補リストに保存します。
出力候補リストに保存した情報をインスタンスサイズの合計でソートし,合計サイズがjheapprofコマンドの-rootobjectinfostオプションで指定した値以上のクラス情報だけが出力されます。
(2) 不要なオブジェクトの参照関係の確認
Tenured増加要因の基点オブジェクトリスト出力機能を実行して基点となるオブジェクトを取得する際の,Tenured領域内の不要オブジェクトによる参照関係の例を示します。
- インスタンス数
-
-
classA:a1が存在するため1
-
classB:b1,b2の二つが存在するため2
-
classC:c1,c2の二つが存在するため2
-
- インスタンスサイズの合計
-
-
classA:classAのインスタンス(a1)と,その参照先のインスタンス(b1,b2,c1,c2)のサイズを合計した122
-
classB:classBのインスタンス(b1,b2)と,その参照先のインスタンス(c1,c2)のサイズを合計した22
-
classC:classCのインスタンス(c1,c2)を合計した2
図9‒15 Tenured領域内の不要なオブジェクトによる参照関係の例
-
Tenured領域内不要オブジェクト統計機能を実行して図9-15のような参照関係の情報を取得した場合に,Tenured増加要因の基点オブジェクトリスト出力機能で取得する情報を次に示します。
-
基点オブジェクト:a1
-
基点オブジェクトのクラス:A
-
基点オブジェクトのクラスAのインスタンスサイズの合計:122
図9-15の参照関係の情報をTenured増加要因の基点オブジェクトリスト出力機能を実行して出力した場合の出力例を次に示します。
Garbage Profile Root Object Information --------------------------------------- *, A # 122