Java heap space error : Common errors in setting Java Heap Size
Applicable Product:
Peoplefluent Learning
Applicable Version:
All Versions
Summary:
Two JVM options are often used to tune JVM heap size: -Xmx for maximum heap size, and -Xms for initial heap size. This article will discuss the common mistakes when using them.
- Missing
m, M, g
orG
at the end (they are case insensitive). For example,
java -Xmx128 BigApp
The correct command should be:
java.lang.OutOfMemoryError: Java heap spacejava -Xmx128m BigApp
. To be precise,-Xmx128
is a valid setting for very small apps, like HelloWorld. But in real life, I guess you really mean-Xmx128m
- Extra space in JVM options, or incorrectly use =. For example,
java -Xmx 128m BigApp
The correct command should be
Invalid maximum heap size: -Xmx
Could not create the Java virtual machine.
java -Xmx=512m HelloWorld
Invalid maximum heap size: -Xmx=512m
Could not create the Java virtual machine.java -Xmx128m BigApp
, with no whitespace nor =. -X options are different than -Dkey=value system properties, where = is used.
- Only setting
-Xms
JVM option and its value is greater than the default maximum heap size, which is64m
. The default minimum heap size seems to be0
. For example,
java -Xms128m BigApp
The correct command should be
Error occurred during initialization of VM
Incompatible initial and maximum heap sizes specifiedjava -Xms128m -Xmx128m BigApp
. It's a good idea to set the minimum and maximum heap size to the same value. In any case, don't let the minimum heap size exceed the maximum heap size.
- Heap size is larger than your computer's physical memory. For example,
java -Xmx2g BigApp
The fix is to make it lower than the physical memory:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.java -Xmx1g BigApp
- Incorrectly use
mb
as the unit, wherem
orM
should be used instead.
java -Xms256mb -Xmx256mb BigApp
Invalid initial heap size: -Xms256mb
Could not create the Java virtual machine. - The heap size is larger than JVM thinks you would ever need. For example,
java -Xmx256g BigApp
The fix is to lower it to a reasonable value:
Invalid maximum heap size: -Xmx256g
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.java -Xmx256m BigApp
- The value is not expressed in whole number. For example,
java -Xmx0.9g BigApp
The correct command should be
Invalid maximum heap size: -Xmx0.9g
Could not create the Java virtual machine.java -Xmx928m BigApp