Could not reserve enough space for object heap

匿名 (未验证) 提交于 2019-12-03 01:54:01

问题:

When I am running 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. Can anyone tell me how can I eliminate this error?

回答1:

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



回答2:

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 


回答3:

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.



回答4:

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.



回答5:

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 


回答6:

I Got the same error,and resolved this by configuring in the run.conf.bat

Run the JVM with the configuring run.conf.bat in Jboss5x

If free memory is not available AS you are passing in the statement then please make changes in run.conf.bat

set "JAVA_OPTS=-Xms512m -Xmx512m -XX:MaxPermSize=256m 


回答7:

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 requirement only applies to 32-bit Java.



回答8:

Sometimes, this error indicates that physical memory and swap on the server actually are fully utilized!

I was seeing this problem recently on a server running RedHat Enterprise Linux 5.7 with 48 GB of RAM. I found that even just running

java -version 

caused the same error, which established that the problem was not specific to my application.

Running

cat /proc/meminfo 

reported that MemFree and SwapFree were both well under 1% of the MemTotal and SwapTotal values, respectively:

MemTotal:     49300620 kB MemFree:        146376 kB ... SwapTotal:     4192956 kB SwapFree:         1364 kB 

Stopping a few other running applications on the machine brought the free memory figures up somewhat:

MemTotal:     49300620 kB MemFree:       2908664 kB ... SwapTotal:     4192956 kB SwapFree:      1016052 kB 

At this point, a new instance of Java would start up okay, and I was able to run my application.

(Obviously, for me, this was just a temporary solution; I still have an outstanding task to do a more thorough examination of the processes running on that machine to see if there's something that can be done to reduce the nominal memory utilization levels, without having to resort to stopping applications.)



回答9:

Error :

For the error, "error occurred during initialization of vm could not reserve enough space for object heap jboss"

Root Cause :

  • Improper/insufficient memory allocation to our JVM as mentioned below.

  • e.g. JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m" in jboss-eap-6.2\bin\standalone.conf or "JAVA_OPTS=-Xms1G -Xmx1G -XX:MaxPermSize=256M" in jboss-eap-6.2\bin\standalone.conf.bat which is nothing but JVM memory allocation pool parameters.

Resolution :

  • Increase the heap size. To increase the heap size,
  • goto -> jboss-eap-6.2\bin\standalone.conf.bat or jboss-eap-6.2\bin\standalone.conf
  • change ->JAVA_OPTS="-Xms256m -Xmx512m -XX:MaxPermSize=256m" where -Xms is Minimum heap size and -Xmx is Maximum heap size.
  • Usually its not recommanded to have same size for min and max.

  • If you are running your application from eclipse,

  • Double click on the server
  • select 'open launch configuration' you will be redirected to the window 'Edit launch configuration properties'.
  • In this windown goto the tab '(x)=Arguments'.
  • In VM Arguments, define your heap size as mentioned below
  • "-Dprogram.name=JBossTools: JBoss EAP 6.1+ Runtime Server" -server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true


回答10:

I know there's a lot of answers here already, but none of them helped me. In the end I opened the file /etc/elasticsearch/jvm.options and changed:

-Xms2G -Xmx2G 

to

-Xms256M -Xmx256M 

That solved it for me. Hopefully this helps someone else here.



回答11:

Suppose your class is called Test in package mypackage. Run your code like this:

java -Xmx1024m mypackage.Test 

This will reserve 1024 MB of heap space for your code. If you want 512 MB, you can use:

java -Xmx512m mypackage.Test 

Use little m in 1024m, 512m, etc



回答12:

I had similar issue . I had installed 32 bit version of Java on a 64 bit machine. Upon uninstalling that version and installing 64 bit version of Java. I was able to resolve the issue.



回答13:

Assuming you have enough free memory and you setup you JVM arguments correctly, you might have a problem of memory fragmentation. Check Java maximum memory on Windows XP.



回答14:

I recently faced this issue. I have 3 java applications that start with 1024m or 1280m heap size. Java is looking at the available space in swap, and if there is not enough memory available, the jvm exits.

To resolve the issue, I had to end several programs that had a large amount of virtual memory allocated.

I was running on x86-64 linux with a 64-bit jvm.



回答15:

I had right amount of memory settings but for me it was using a 64bit intellij with 32 bit jvm. Once I switched to 64 bit VM, the error was gone.



回答16:

Anyway, 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

OR

Change the ant call as shown as below.

   **      

It worked for me.



回答17:

Error occurred during initialization of VM Could not reserve enough space for 1572864KB object heap

I changed value of memory in settings.grade file 1536 to 512 and it helped



回答18:

In case you are running a java program: - run your program in a terminal using the correct command for linux it would be 'java -jar myprogram.jar' and add -Xms256m -Xmx512m, for instance: 'java -jar myprogram.jar Xms256m -Xmx512m'

In case you are running a .sh script (linux, mac?) or a .bat script (windows) open the script and look for the java options if they are present and increase the memory.

If all of the above doesn't work, check your processes (ctrl+alt+delete on windows) (ps aux on linux/mac) and kill the processes which use allot of memory and are not necessary for your operating system! => Try to re-run your program.



回答19:

If you're running 32bit JVM, change heap size to smaller would probabaly help. You can do this by passing args to java directly or through enviroment variables like following,

java -Xms128M -Xmx512M JAVA_OPTS="-Xms128M -Xmx512M" 

For 64bit JVM, bigger heap size like -Xms512M -Xmx1536M should work.

Run java -version or java -d32, java--d64 for Java7 to check which version you're running.



回答20:

In CASSANDRA_HOME/bin/cassandra.bat you would find following configuration

REM JVM Opts we'll use in legacy run or installation set JAVA_OPTS=-ea^  -javaagent:"%CASSANDRA_HOME%\lib\jamm-0.3.0.jar"^  -Xms**2G**^  -Xmx**2G**^ 

You can reduce 2G to some smaller number for e.g. 1G or even lesser and it should work.

Same if you are running on unix box, change in .sh file appropriately.



回答21:

Sometimes it relates to

$ sysctl vm.overcommit_memory vm.overcommit_memory = 2 

If you set it to:

$ sysctl vm.overcommit_memory=0 

It should work.



回答22:

Replace -Xmx2G^ with -Xms512M^ or any greater memory size in cassandra.bat file in cassandra bin directory.



回答23:

I got the same error and it got resolved when I deleted temp files using %temp% and restarting eclipse.



回答24:

No need to do anything just chnage in POM file like below

1024M


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!