Advertisement
Advertisement


Could not reserve enough space for object heap


Question

I am getting the following exception repeatedly each time I try to run the program.

Error occurred during initialization of VM

Could not reserve enough space for object heap

Could not create the Java virtual machine.

I tried to increase my virtual memory (page size) and RAM size, but to no avail.

How can I eliminate this error?

2020/06/20
1
281
6/20/2020 9:12:55 AM

Accepted Answer

Run the JVM with -XX:MaxHeapSize=512m (or any big number as you need) (or -Xmx512m for short)

2019/03/23
214
3/23/2019 9:15:07 AM

This can also be caused by setting something too large on a 32-bit HotSpot vm, for example:

-Xms1536m -Xmx1536m

where this might/would work:

-Xms1336m -Xmx1336m
2013/07/31

here is how to fix it:

  • Go to Start->Control Panel->System->Advanced(tab)->Environment Variables->System

    Variables->New: Variable name: _JAVA_OPTIONS Variable value: -Xmx512M Variable name: Path
    Variable value: %PATH%;C:\Program Files\Java\jre6\bin;F:\JDK\bin;

Change this to your appropriate path.

2019/03/23

I ran into this when using javac, and it doesn't seem to pick up on the command line options,

-bash-3.2$ javac -Xmx256M HelloWorldApp.java 
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

so the solution here it so set _JAVA_OPTIONS

-bash-3.2$ export _JAVA_OPTIONS="-Xmx256M"
-bash-3.2$ javac HelloWorldApp.java 
Picked up _JAVA_OPTIONS: -Xmx256M

And this compiles fine.

This happens to me on machines with a lot of RAM, but with lower memory ulimits. Java decides to allocate a big heap because it detects the ram in the machine, but it's not allowed to allocate it because of ulimits.

2019/03/25

32-bit Java requires contiguous free space in memory to run. If you specify a large heap size, there may not be so much contiguous free space in memory even if you have much more free space available than necessary.

Installing a 64-bit version of Java helps in these cases, the contiguous memory requirements only applies to 32-bit Java.

2019/03/23

Combined with -Xmx512M use -d64 to make sure you're running 64-bit VM. On a 64-bit machine I thought for sure I was running 64-bit virtual machine, but no. After installing 64-bit Java the -d64 option works and -Xmx allows much larger memory sizes.

java -d64 -Xmx512M mypackage.Test
2011/11/23

Source: https://stackoverflow.com/questions/4401396
Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Email: [email protected]