8.12 明示管理ヒープ機能使用時の注意事項

この節では,明示管理ヒープ機能使用時の注意事項について説明します。

<この節の構成>
(1) Javaヒープの初期サイズと最大サイズの設定
(2) HTTPセッションに関するオブジェクトでExplicitヒープを利用する際の注意

(1) Javaヒープの初期サイズと最大サイズの設定

Javaヒープの初期サイズ(-Xms)と最大サイズ(-Xmx)には,必ず同じ値を指定してください。同じ設定でない場合,コピーガーベージコレクションの回数が増加するおそれがあります。

なお,この設定は,明示管理ヒープ機能を使用しない場合にも推奨の設定です。

補足:
Javaヒープの初期サイズと最大サイズが異なる場合,各領域のサイズは,次のタイミングで変更されます。
  • コピーガーベージコレクション終了時
    New領域のサイズが動的に変更されます。
  • フルガーベージコレクション終了時
    Tenured領域とNew領域のサイズが動的に変更されます。
New領域のサイズは,主にTenured領域のサイズと-XX:NewRatioオプションに指定した値によって決まります。
明示管理ヒープ機能によってフルガーベージコレクションの発生が抑止されると,Tenured領域のサイズが変更されるタイミングがなくなります。これに伴って,New領域のサイズも,ほぼ一定になります。
このため,初期サイズよりも大きい最大サイズを定義していても,New領域が拡張されるタイミングがなくなり,初期サイズで指定したままのサイズになります。初期サイズで指定したNew領域が小さい場合,明示管理ヒープ機能を使用しない場合に比べて,コピーガーベージコレクションが多く発生するおそれがあります。

(2) HTTPセッションに関するオブジェクトでExplicitヒープを利用する際の注意