This point describes about the measures to be taken and how to check when the initialization of Explicit memory block fails.
When number of Explicit memory blocks reaches the maximum limit, the Explicit memory block cannot be initialized beyond that limit.
In such cases, reduce the number of Explicit memory blocks.
Here, how to check whether the initialization of Explicit memory block has failed, is described.
To investigate with the event log of explicit management functionality, you must specify normal in the -XX:HitachiExplicitMemoryLogLevel option of JavaVM in advance. As a result, whenever the garbage collection occurs, the frequency at which the initialization of Explicit memory block fails, will be output to the explicit management heap functionality event log.
An output example is as follows:
[ENS]Thu Oct 21 14:55:50 2007[EH: 12672K->12800K(12800K/65536K)][E/F/D: 200/0/0][cause:GC][CF: 0] |
The part in bold indicates the number of times the initialization of Explicit memory block failed between the last and the recent output. In this example, frequency is "0". When there is no failure in the initialization, it is concluded that there is no problem.
Moreover, when verbose is specified in the -XX:HitachiExplicitMemoryLogLevel option of JavaVM, the information about event of failure in the initialization of Explicit memory block will be output.
An output example is as follows:
[EVO]Tue Jul 24 01:23:51 2007[Creation failed][EH: 32760K(0K)/32768K/65536K][E/F/D: 65535/0/0][Thread: 0x00035a60] |
From the part marked in bold, you can confirm that there is a failure in the initialization of Explicit memory block. Moreover, the rows starting with [EVO][Thread: 0x00035a60] indicates the stack trace when event occurs.
Also, when debug is specified in the -XX:HitachiExplicitMemoryLogLevel option of JavaVM, the detailed information about the initialization events of the Explicit memory block other than the event of failure in the initialization will be output. The initialization fails when the number of Explicit memory blocks exceed the constant number. Therefore, the information of initialization event prior to failure in initialization is useful for investigations.
An output example is as follows:
[EVO]Tue Jul 24 01:23:51 2007[Created]["BasicExplicitMemory-2" eid=2(0x1234568)/B][Thread: 0x00035a60] |
The part marked in bold confirms that there is an Explicit memory block initialization event. Moreover, the rows starting with [EDO][Thread: 0x00035a60] indicates the stack trace when the event has occurred.
Though you cannot check the direct cause responsible for failure in initialization of the Explicit memory block from the information output by thread dump, you can find out the number of Explicit memory blocks.
An output example is as follows:
Explicit Heap Status |
The part marked in bold indicates the number of Explicit memory blocks.
You can investigate the number of Explicit memory blocks using the following methods:
However, you cannot check the direct cause responsible for failure in initialization of the Explicit memory block in this API.