Cosminexus システム設計ガイド

[目次][用語][索引][前へ][次へ]

8.5.1 DefNew領域に格納する方法

一定期間存在するオブジェクトをDefNew領域で管理する方法です。DefNew領域のメモリサイズに,これらの一定期間存在するオブジェクト分のメモリサイズを追加して見積もります。

DefNew領域サイズを大きくしてオブジェクトのTenured領域への移動を抑止することによって,フルガーベージコレクションの発生も抑止できます。ただし,コピーガーベージコレクション実行時にDefNew領域内にある使用中オブジェクトの数が増えるため,DefNew領域内でのコピー処理に時間が掛かり,1回当たりのコピーガーベージコレクション実行時間は長くなります。コピーガーベージコレクションの実行時間がフルガーベージコレクション実行時間よりも長くなるような場合は,メモリサイズの再見積もりが必要です。また,メモリ空間のサイズ設定によっては,本来コピーガーベージコレクションで回収されるはずの寿命の短いオブジェクトが使用する領域が不足して,Tenured領域への退避が発生するおそれがあります。この場合は,最終的にはフルガーベージコレクションが発生してしまいます。

なお,一定期間存在するオブジェクトをDefNew領域で管理できているかどうかは,拡張verbosegc情報で確認できます。実際にアプリケーションを動作させて,出力された拡張verbosegc情報で,コピーガーベージコレクション発生後のTenured領域のメモリサイズが大幅に増えていないことを確認してください。

DefNew領域での管理に失敗している場合,システムの処理性能が大幅に低下していることがあります。DefNew領域で管理できていないことがわかった場合は,一定期間存在するオブジェクトは,Tenured領域に格納して管理することを検討してください。Tenured領域で管理する方法については,「8.5.2 Tenured領域に格納する方法」を参照してください。