Tenured領域内不要オブジェクト統計機能では,Tenured領域内に蓄積された不要となったオブジェクトだけを特定して,スレッドダンプファイルに出力します。Tenured領域内不要オブジェクト統計機能の仕組みについて説明します。
コピーガーベージコレクションの繰り返しによって,長寿命オブジェクトがTenured領域に蓄積します。蓄積した長寿命オブジェクトのうち,時間が経過して用途を失ったオブジェクトは,不要なオブジェクトとなってTenured領域内に残ります。その後,メモリがいっぱいになったタイミングでフルガーベージコレクションが発生します。コピーガーベージコレクションの発生からフルガーベージコレクションの発生までのTenured領域の使用量は,Tenured領域内不要オブジェクト統計機能,およびインスタンス統計機能で確認できます。
Tenured領域内不要オブジェクト統計機能,およびインスタンス統計機能を使って特定できる内容を次の図に示します。
図8-8 Tenured領域内不要オブジェクト統計機能,およびインスタンス統計機能を使って特定できる内容
統計前ガーベージコレクションを実施しないでインスタンス統計機能を実行した場合,図8-8の3.のサイズが出力されます。このサイズは,図8-8の1.に該当するTenured領域内で不要となったオブジェクトのサイズ,および図8-8の2.に該当するTenured領域内で使用中のオブジェクトを含んだTenured領域内のメモリ使用状況になります。
一方,Tenured領域内不要オブジェクト統計機能を実行した場合は,図8-8の2.の使用中のオブジェクトを除いたTenured領域内のメモリ使用状況(図8-8の1.に該当)を出力できます。Tenured領域内不要オブジェクト統計機能を使うことで,Tenured領域の増加要因となる不要となったオブジェクトを特定できるため,フルガーベージコレクションを抑止できます。
Tenured領域内不要オブジェクト統計機能では,基点となるオブジェクトはTenured領域内のアドレスの低い順に検索されます。検索されたオブジェクトの中でも,ほかの参照関係で調べられていないオブジェクトが基点となるオブジェクトになります。
参照先のオブジェクトが調査済みの場合は,分岐点まで戻って参照関係を調べます。また,参照先のオブジェクトがほかの参照関係の基点となるオブジェクトである場合は,参照先オブジェクトとして扱います。すべての基点となるオブジェクトがなくなるまで参照関係を調べます。
Tenured領域内不要オブジェクト統計機能の場合,インスタンス数,およびインスタンスサイズの合計が出力されます。インスタンス数は該当するクラスを加算します。インスタンスの合計サイズには次の内容が出力されます。
なお,Tenured領域内不要オブジェクト統計機能を実行した場合,インスタンス統計機能,STATICメンバ統計機能,および統計前のガーベージコレクション選択機能は無効となります。
Tenured領域内の不要オブジェクトによる参照関係の例を示します。
図8-9 Tenured領域内の不要なオブジェクトによる参照関係の例
図8-9の参照関係について説明します。
Tenured領域内不要オブジェクト統計機能を実行して,図8-9の参照関係の情報を出力した場合の出力例を次に示します。
Garbage Profile |