JavaVMでは,空きメモリが一定のサイズ以下になると,フルガーベージコレクションが実行されます。フルガーベージコレクションが実行されると,そのJavaVM上での処理はすべて中断されます。バッチサーバ上のアプリケーションがリソースを排他状態で使用している時にフルガーベージコレクションが実行されると,排他したままで処理が中断されます。この場合,同じリソースを使用したいオンライン処理の実行も中断されてしまいます。
バッチアプリケーションの実行環境では,バッチサーバ上でフルガーベージコレクションを実行するタイミングを制御できます。この制御では,リソースが排他されていないタイミングを見計らってフルガーベージコレクションを実行して,不要なオブジェクトを解放します。これによって,意図しないタイミングでフルガーベージコレクションが実行されることを抑止できます。
バッチサーバでのフルガーベージコレクション制御の概要を次の図に示します。
図5-3 バッチサーバでのフルガーベージコレクション制御の概要
1.でフルガーベージコレクション制御によって,メモリ使用量がしきい値を超えたことが検知されます。バッチサーバでは,使用していたリソースを解放したことを2.で確認してから,3.のフルガーベージコレクションを実行します。