オンライン処理とバッチ処理で同じリソースにアクセスする場合,オンライン処理のスループットに影響を与えないように考慮する必要があります。
バッチアプリケーション実行時に空きメモリが少なくなると,JavaVMによってバッチサーバのフルガーベージコレクションが実行されます。この場合,バッチサーバ上で動作するすべてのプログラムの処理が中断されます。バッチアプリケーションがリソースを排他していた場合,そのリソースはバッチサーバのフルガーベージコレクション実行中も排他された状態になります。オンライン処理の中に排他中のリソースを使用する処理があった場合は,そのオンライン処理も中断されてしまいます。
これを防ぐために,メモリ使用量のしきい値を設定して,メモリ不足が起こる前に明示的にフルガーベージコレクションを発生させるようにします。明示的なフルガーベージコレクションは,リソースを排他していないタイミングで発生するように制御できます。JavaVMによってフルガーベージコレクションが実行される前に空きメモリを増やしておくことで,リソース排他中にフルガーベージコレクションが実行されることを防ぎます。
しきい値を設定した場合,次に示す状態になるとフルガーベージコレクションが実行されます。ただし,そのときにバッチアプリケーションがリソースを排他していた場合は,排他が解除されるまで待ってから実行されます。