7.10.4 自動解放処理に掛かる時間を短縮する場合の注意事項
ここでは,自動解放処理に掛かる時間を短縮する場合に使用する,Explicitメモリブロックへのオブジェクト移動制御機能,および明示管理ヒープ機能適用除外クラス指定機能使用時の注意事項について説明します。
-
Explicitメモリブロックへのオブジェクト移動制御機能は,自動配置機能で作成したExplicitメモリブロックにあるオブジェクトから参照されているJavaヒープのオブジェクトを,FullGC発生時にExplicitヒープへ移動しないようにします。この機能を有効にすると,これまでFullGCが発生していたシステムでは,FullGCの発生回数が増加することがあります。FullGCの発生回数がシステム上問題となる場合は,JavaVMで使用する領域のメモリサイズを再度チューニングしてください。メモリチューニングについては,マニュアル「アプリケーションサーバ システム設計ガイド」の「7. JavaVMのメモリチューニング」を参照してください。
-
明示管理ヒープ機能適用除外クラス指定機能は,自動配置機能で作成したExplicitメモリブロックにあるオブジェクトから参照されているJavaヒープのオブジェクトのうち,設定ファイルに指定されているクラスのオブジェクトをExplicitヒープに移動しないようにします。この機能を有効にすると,Explicitヒープへ移動していたオブジェクトがTenured領域に移動するため,Tenured領域の使用量が増加します。このため,FullGCの発生回数が増加するおそれがあります。FullGCの発生回数がシステム上問題になる場合は,JavaVMで使用する領域のメモリサイズを再度チューニングしてください。メモリチューニングについては,マニュアル「アプリケーションサーバ システム設計ガイド」の「7. JavaVMのメモリチューニング」を参照してください。
-
明示管理ヒープ機能適用除外クラス指定機能は,J2EEサーバまたはバッチサーバ起動時に設定ファイルを読み込みます。そのため,多量のクラスを設定ファイルに指定すると,J2EEサーバまたはバッチサーバの起動時間が長くなるおそれがあります。J2EEサーバまたはバッチサーバの起動時間と,自動解放処理時間などを比較して,この機能の利用を検討してください。
-
明示管理ヒープ機能適用除外クラス指定機能は,クラスロード時に明示管理ヒープ機能適用除外対象かどうかを判定します。そのため,多量のクラスを設定ファイルに指定すると,クラスロード時間が増加するおそれがあります。
-
明示管理ヒープ機能適用除外クラス指定機能は,設定ファイルで指定したクラスのオブジェクトを明示管理ヒープ機能の対象から除外します。そのため,Explicitヒープに配置すると効果があるオブジェクトのクラスを設定ファイルに指定してしまうと,FullGC抑止の効果が得られないおそれがあります。
-
明示管理ヒープ機能適用除外クラス指定機能は,「7.6.5 参照関係に基づくオブジェクトのJavaヒープからExplicitメモリブロックへの移動」を実行しないことで,明示管理ヒープ機能適用対象外のオブジェクトとします。このため,アプリケーションでオブジェクトの直接生成を指定した場合,そのオブジェクトのクラスを明示管理ヒープ機能適用除外クラスに指定しても,Explicitメモリブロックに生成されます。アプリケーションでのオブジェクトの直接生成については,「7.6.3 Explicitメモリブロックへのオブジェクトの直接生成」を参照してください。
なお,HTTPセッションに格納されたオブジェクトを明示管理ヒープ機能適用除外クラスに指定した場合は,明示管理ヒープ機能適用除外対象となり,Explicitメモリブロックへ移動しません。HTTPセッションに格納されたオブジェクトについては,「7.4.1 HTTPセッションに関するオブジェクト」を参照してください。
-
アプリケーションのデバック時などにGCを抑止している間は,FullGCも自動解放処理も実行できません。GCを抑止している間に,-freeratioオプションを指定してeheapprofコマンドを実行してもオブジェクト解放率情報が取得できないため,スレッドダンプのExplicitヒープ詳細情報には,Explicitメモリブロック内のオブジェクト統計情報だけが出力され,オブジェクト解放率情報は出力されません。