Hitachi

Cosminexus V11 アプリケーションサーバ システム設計ガイド


7.5.1 アプリケーションで必要なメモリサイズの算出

Tenured領域のメモリサイズは,アプリケーションが最低限必要とするメモリサイズから見積もります。必要なメモリサイズが確保できない場合,OutOfMemoryErrorが発生してJavaVMが停止します。

アプリケーションが必要とするメモリサイズは,FullGC実行時の拡張verbosegc情報で,FullGC実行後に使用しているメモリサイズを確認することで判断できます。これは,FullGC実行後にJavaヒープ全体から不要なオブジェクトをすべて削除した状態のメモリサイズが,アプリケーションが必要とするメモリサイズに近いと考えられるためです。

FullGC実行時の拡張verbosegc情報の出力例を次に示します。

…
[VGC]<Wed May 11 23:12:05 2005>[Full GC 31780K->30780K(32704K), 0.2070500secs][DefNew::Eden: 3440K->1602K(3456K)][DefNew::Survivor:58K->0K(64K)][Tenured: 28282K->29178K(29184K)][Metaspace:3634K(4492K, 4492K)->3634K(4492K, 4492K)][class space: 356K(388K, 388K)->356K(388K, 388K)][cause:ObjAllocFail][User: 0.0156250 secs][Sys: 0.0312500 secs]
…

「Full GC」に続いて出力されている情報のうち,GCの実行後の情報「->30780K」を確認します。ここでは,FullGC実行後に,30,780キロバイトのメモリサイズを必要としていることがわかります。

何回分かのFullGCの拡張verbosegc情報を集め,GC実行後の領域長がいちばん大きい情報を,アプリケーションが必要とするメモリサイズであると判断してください。