7.17.5 Javaヒープ領域のメモリ管理方法
オブジェクト作成からGC完了までの流れを次の図に示します。
|
(1) オブジェクト作成時
オブジェクトのサイズに応じて,Smallページ,MediumページまたはLargeページにオブジェクトが配置されます。
各ページに配置されるオブジェクトは次のとおりです。
-
SmallページおよびMediumページ
各ページのサイズの12.5%以下のオブジェクトが配置されます。
-
Largeページ
Mediumページのサイズの12.5%より大きなオブジェクトが配置されます。ただし,Largeページに配置できるオブジェクトは,1ページごとに1つだけです。
なお,すでにオブジェクトがあるページに新しいオブジェクトを配置できる場合は,そのページを優先してオブジェクトを配置します。
(2) 回収するページの選択
使用済みのオブジェクトの割合に応じて,回収するページを選択します。この割合は,-XX:ZFragmentationLimitオプションで設定できます。詳細は,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「14.5 Application Serverで指定できるJava HotSpot VMのオプション」を参照してください。
(3) 使用中のオブジェクトのコピーとページの回収
選択したページに含まれる使用中のオブジェクトのサイズに応じて,Free領域からページを割り振り,使用中のオブジェクトをコピーします。そのあと,ページを回収して,削除します。Free領域が不足してコピーできない場合は,InPlaceを使用します。
InPlaceとは,回収するページ内に使用中のオブジェクトをコピーする方法です。これによって,Free領域が不足している場合でも,OutOfMemoryにならないでGC処理を実行できます。
InPlaceの概要を次の図に示します。
|
(4) GC完了
回収されたページの領域は,Free領域に追加されて再利用されます。