一般的に,コピーガーベージコレクションの方が,フルガーベージコレクションよりも短い時間で処理できます。
New領域へのコピーガーベージコレクションの実施によって適切にメモリを回収して,Javaヒープ全体を対象とするフルガーベージコレクションの発生をできるだけ抑止することが,システムの停止回数の削減や,処理性能向上につながります。これを実現するためには,JavaVMオプションでそれぞれのメモリ空間のサイズや割合を適切に設定することが必要です。
また,Tenured領域に配置されるオブジェクトの一部を,明示管理ヒープ機能で管理するExplicitヒープに配置することも,フルガーベージコレクションの発生抑止に効果的です。Explicitヒープは,自動配置設定ファイルや明示管理ヒープAPIを使って,アプリケーションから利用できます。また,ExplicitヒープはJ2EEサーバからも利用されます。
これらを踏まえ,JavaVMのチューニングは,次の2点を目的として実施します。
理想的なメモリ使用量と経過時間の関係を次の図に示します。
図7-8 理想的なメモリ使用量と経過時間の関係
この図の場合は,寿命の短いオブジェクトはすべてコピーガーベージコレクションによって回収できていて,オブジェクトの昇格や退避が発生しません。このため,コピーガーベージコレクション実行後のメモリサイズが一定です。これによって,フルガーベージコレクションが発生しない,安定した状態での運用を実現できます。
JavaVMのチューニングでは,この状態を理想として,JavaVMの使用するメモリ空間の各領域で使用するメモリサイズを見積もってチューニングします。