7.10.1 適用効果があるかどうかの確認
Explicitメモリブロックへのオブジェクト移動制御機能は,FullGC発生時にオブジェクトがExplicitヒープへ移動しないようにする機能です。この機能を適用して効果があるかどうかは,スレッドダンプに含まれるExplicitメモリブロック情報と,明示管理ヒープ機能のイベントログを確認することで判定できます。Tenured領域の使用量が少なく,次の条件を満たすExplicitメモリブロックがある場合は適用効果がありますので,機能の利用を検討してください。
-
Explicitメモリブロック情報の<EM_NAME>が「NULL」である(一度自動解放処理を実施したExplicitメモリブロックである)。
-
Explicitメモリブロック情報の<EH_TOTAL>の値が,ほかのExplicitメモリブロックに比べると,極端に大きいExplicitメモリブロックがある。
-
FullGC発生時に出力される明示管理ヒープ機能のイベントログで,<EH_USED_AF>が<EH_USED_BF>に比べて大幅に増加している。
明示管理ヒープ機能適用除外クラス指定機能は,オブジェクト移動制御機能を利用してもExplicitメモリブロックの自動解放処理に時間が掛かるような場合に,要因となるオブジェクトを指定してExplicitヒープへ移動しないようにする機能です。明示管理ヒープ機能適用除外クラス指定機能を適用すると,設定ファイルに指定したクラスのオブジェクトが適用除外対象になります。この機能を適用して効果があるかどうかは,スレッドダンプに含まれるExplicitメモリブロック情報を確認することで判定できます。Tenured領域の使用量が少なく,Explicitメモリブロック内に次の条件を満たすクラスがある場合は適用効果がありますので,機能の利用を検討してください。
-
Explicitメモリブロック情報の<EM_NAME>が「NULL」である(一度自動解放処理を実施したExplicitメモリブロックである)。
-
Explicitメモリブロック情報の<EH_TOTAL>の値が,ほかのExplicitメモリブロックに比べると,極端に大きいExplicitメモリブロックがある。
-
Explicitメモリブロック情報にある,オブジェクト統計情報の<ISIZE>の値が大きく,オブジェクト解放率情報の<FRATIO>の値が低いオブジェクトがあり,そのクラスはJava SEが提供しているクラス以外である。
スレッドダンプに含まれるExplicitメモリブロック情報の出力内容については,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「5.5 JavaVMのスレッドダンプ」を参照してください。また,明示管理ヒープ機能のイベントログについては,マニュアル「アプリケーションサーバ 機能解説 保守/移行編」の「5.11 明示管理ヒープ機能のイベントログ」を参照してください。