8.9 javagcコマンドによるExplicitメモリブロックの解放

ここでは,javagcコマンドによる明示管理ヒープの解放について説明します。

javagcコマンドによるExplicitメモリブロックの解放は,任意のタイミングで実行できます。これによって,自動解放機能が有効な場合の解放処理で解放されなかったExplicitメモリブロックを明示的に解放できます。

<この節の構成>
(1) 実行契機
(2) 実行される内容

(1) 実行契機

-ehgcオプションを指定してjavagcコマンドを実行したタイミングで,解放処理が実行されます。

注意
javagcコマンドによるExplicitメモリブロックの解放処理では,FullGCが実行されます。このため,動作中のアプリケーションに対する処理には適していません。アプリケーションのアンデプロイ時や夜間など,アプリケーションが動作していない時間帯に実行することをお勧めします。

(2) 実行される内容

javagcコマンドを実行すると,JavaVMによってFullGCが実行され,拡張verbosegc情報にGCの要因として「EMJavaGC Command」が出力されます。そのあと,次に示すExplicitメモリブロックが解放されます。

GCの要因については,マニュアル「アプリケーションサーバ リファレンス 定義編(サーバ定義)」の「-XX:[+|-]HitachiVerboseGCPrintCause(GC要因内容出力オプション)」を参照してください。

また,次の場合は,解放処理が実行されません。

この場合,コンストラクタの実行は成功しますが,無効なExplicitメモリブロック(ExplicitMemoryインスタンス)として扱われます。