Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 拡張編


2.9.1 GC制御機能の概要

GCとは,プログラムが使用し終わったメモリ領域を自動的に回収して,ほかのプログラムが利用できるようにするための技術です。GCはJavaVMが実行します。

GCには処理時間が掛かります。また,GC実行中は,JavaVM上のすべてのプログラム処理が中断するため,GCを適切に実行できるかどうかが,システムの処理性能に大きく影響します。

バッチサーバでは,バッチアプリケーションが長時間リソースを排他するのを回避するため,GC制御機能を提供しています。GC制御機能とは,リソースが排他されていないときに明示的にFullGCを実行するための機能です。GC制御機能の利用によって,リソースの排他中にFullGCが発生するのを回避できます。

GC制御機能について,例を使用して説明します。

GC制御機能を使用していない場合,バッチ処理と並行してオンライン処理を実行する環境では,次の図に示す問題があります。

図2‒13 GC制御機能を使用していない場合

[図データ]

この図では,バッチアプリケーションでのリソース排他中に,FullGCが発生しています。これによって,バッチアプリケーションはリソースを排他したまま処理が中断します。また,この間にオンライン処理から排他中のレコードが参照されると,オンライン処理もバッチサーバのFullGCが終了するまで中断します。

GC制御機能を使用すると次の図のようになります。

図2‒14 GC制御機能を使用している場合

[図データ]

図のように,FullGCの実行要求が出たときに,バッチアプリケーションでリソースを排他していると,FullGCの実行は待ち状態になります。

レコードの排他が解除されると,バッチサーバでFullGCが実行されます。また,オンライン処理もリソースへのアクセスができるようになります。これによって,バッチアプリケーションでの長時間のリソース排他を回避できます。