7.6.2 Explicitメモリブロックの初期化
ここでは,Explicitメモリブロックの初期化の実行と,初期化時に実行される処理について説明します。
- 〈この項の構成〉
(1) 実行契機
アプリケーションで任意のオブジェクトをExplicitヒープに配置する場合,次に示す明示管理ヒープ機能APIを呼び出すことでExplicitメモリブロックが初期化されます。
-
BasicExplicitMemory.BasicExplicitMemory()
-
BasicExplicitMemory.BasicExplicitMemory(String name)
また,これらのAPIのほかに,自動配置設定ファイルで指定したオブジェクトが生成されたタイミングでもExplicitメモリブロックが初期化されます。なお,J2EEサーバがオブジェクトを配置するExplicitメモリブロックでは,Webコンテナによって初期化と最初のオブジェクトの配置が実行されます。実行契機については,「7.4 J2EEサーバ利用時にExplicitヒープに配置されるオブジェクト」を参照してください。
(2) 実行される内容
Explicitメモリブロックが初期化されます。ただし,この段階ではExplicitメモリブロック用のメモリ領域の確保は実行されません。
また,次の場合は,初期化が実行されません。
-
最大数の制限を超えてExplicitメモリブロックを初期化しようとした場合
現存するExplicitメモリブロックの数が1,048,575個の場合が該当します。
-
明示管理ヒープ機能がオフになっている場合
-XX:-HitachiUseExplicitMemoryオプションが指定されている場合が該当します。
この場合,コンストラクタの実行は成功しますが,無効なExplicitメモリブロックとして扱われます。初期化したExplicitメモリブロック(ExplicitMemoryインスタンス)に対する処理は,すべて無効になります。