每次我试图运行该程序时,都会重复得到以下异常。

虚拟机初始化时出错 无法为对象堆预留足够的空间 无法创建Java虚拟机。

我试图增加我的虚拟内存(页面大小)和RAM大小,但没有效果。

我怎样才能消除这个错误?


当前回答

如果您运行的是32位JVM,那么将堆大小更改为较小可能会有所帮助。你可以通过直接向java传递参数或通过环境变量来做到这一点,

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

对于64位JVM,更大的堆大小,如-Xms512M -Xmx1536M应该可以工作。

为Java7运行java -version或java -d32, java——d64来检查您正在运行的版本。

其他回答

下面是解决方法:

进入“开始->控制面板->系统->高级(tab)->环境变量->系统 变量->新:变量名:_JAVA_OPTIONS 变量值:-Xmx512M 变量名:Path C:\Program Files\Java\jre6\bin;F:\JDK\bin;

将其更改为适当的路径。

假设你的类在包mypackage中叫做Test。像这样运行代码:

java -Xmx1024m mypackage.Test

这将为您的代码保留1024mb的堆空间。如果你想要512 MB,你可以使用:

java -Xmx512m mypackage.Test

在1024m, 512m等单位使用小m

假设您有足够的空闲内存,并且正确地设置了JVM参数,那么您可能会遇到内存碎片的问题。在Windows XP上检查Java最大内存。

如果你正在运行一个java程序: -在终端上运行你的程序,使用正确的linux命令:'java -jar myprogram.jar'然后添加-Xms256m - xmx512m,例如:'java -jar myprogram.jar Xms256m - xmx512m '

如果你正在运行一个。sh脚本(linux, mac?)或一个。bat脚本(windows),打开脚本并寻找java选项,如果它们存在并增加内存。

如果以上都不起作用,检查你的进程(windows上的ctrl+alt+delete) (linux/mac上的ps aux),并杀死那些占用分配内存且对你的操作系统不需要的进程!试着重新运行程序。

错误:

对于“初始化vm时发生错误,无法为对象堆jboss预留足够的空间”的错误。

根本原因:

JVM内存分配不当/不足,如下所述。 例如,jboss-eap-6.2\bin\standalone.conf中的JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m"或jboss-eap-6.2\bin\standalone.conf.bat中的"JAVA_OPTS=-Xms1G -Xmx1G -XX:MaxPermSize=256m",这只是JVM内存分配池参数。

解决方法:

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