7.6.2 Initializing the Explicit memory block
This section describes about the initialization and the execution of Explicit memory blocks and the processes that are executed during initialization.
- Organization of this subsection
(1) Execution timing
In an application, if you want to place any object in the Explicit heap, the Explicit memory block is initialized by invoking the following Explicit Memory Management functionality API.
-
BasicExplicitMemory.BasicExplicitMemory()
-
BasicExplicitMemory.BasicExplicitMemory(String name)
Besides these APIs, the Explicit memory block is also initialized when the object, which you specified in the automatic placement configuration file, is generated. The Web container performs initialization and places the first object in the Explicit memory block, in which the J2EE server places objects. For details on the execution timing, see 7.4 When using J2EE server objects placed in Explicit heap.
(2) Executed details
The Explicit memory block is initialized. However, the memory area for an Explicit memory block is not secured at this stage.
The initialization is not performed in the following cases:
-
When you try to initialize the Explicit memory block after the maximum limit is exceeded
This refers to the case when the number of existing Explicit memory blocks is 1,048,575.
-
When the Explicit Memory Management functionality is OFF
This refers to the case when the -XX:-HitachiUseExplicitMemory option is not specified.
In such cases, although the constructor is successfully executed, it is handled as an invalid Explicit memory block. All the processes related to the initialized Explicit memory block (ExplicitMemory instance) become invalid.