If almost 2 GB is used for maximum heap size for a 32-bit
JVM, you might experience JVMST018 during JVM initialization:
# ./java -version -Xms128M -Xmx2048M
[ **Out of memory, aborting** ]
[ ]
[ *** panic: JVMST018: Cannot allocate memory for
initializeMarkAndAllocBits(allocbits1) ]
JVMST018 error message indicates not enough virtual storage is
available to allocate the allocbits vector. As a result, the call to
sysMapMem() fails. This happens only during initialization of memory.
Because of the 2 GB total address space allocated for processing that must
include the text, data, bss, heap, shared memory and stack, an attempted
allocation is just too much. The program's code (text), shared libraries
for program execution, initialized and uninitialized data, the heap
(malloc) and stack all have to fit into 2 GB.
Lowering maximum heap size can resolve this problem.
|