Javaヒープの初期サイズ(-Xms)と最大サイズ(-Xmx)には,必ず同じ値を指定してください。同じ設定でない場合,CopyGCの回数が増加するおそれがあります。
なお,この設定は,明示管理ヒープ機能を使用しない場合にも推奨の設定です。
- 補足:
- Javaヒープの初期サイズと最大サイズが異なる場合,各領域のサイズは,次のタイミングで変更されます。
- CopyGC終了時
New領域のサイズが動的に変更されます。
- FullGC終了時
Tenured領域とNew領域のサイズが動的に変更されます。
- New領域のサイズは,主にTenured領域のサイズと-XX:NewRatioオプションに指定した値によって決まります。
- 明示管理ヒープ機能によってFullGCの発生が抑止されると,Tenured領域のサイズが変更されるタイミングがなくなります。これに伴って,New領域のサイズも,ほぼ一定になります。
- このため,初期サイズよりも大きい最大サイズを定義していても,New領域が拡張されるタイミングがなくなり,初期サイズで指定したままのサイズになります。初期サイズで指定したNew領域が小さい場合,明示管理ヒープ機能を使用しない場合に比べて,CopyGCが多く発生するおそれがあります。
JavaVMのスレッドダンプに出力するExplicitヒープ詳細情報には,Explicitメモリブロックの名称が出力されます。Explicitメモリブロックの名称の文字数の上限は2,000文字です。JP.co.Hitachi.soft.jvm.MemoryAreaクラスのsetNameメソッドで,2,000文字を超えるExplicitメモリブロックの名称を設定した場合,2,000文字を超えた部分の名称は,スレッドダンプに出力されません。