Java: 无法为对象堆保留足够的空间

6

我正在尝试为一款由bat文件启动的Java应用程序分配2G内存,使用以下代码:

 @echo off
    "%ProgramFiles(x86)%\Java\jre6\bin\java.exe" -Xmx2G -Xms1G -jar craftbukkit-1.2.5-R4.0.jar
    pause

然而,当我尝试像这样运行它时,它会报错:

 Error occurred during initialization of VM
    Could not reserve enough space for object heap
    Could not create teh Java virtual machine
    Press any key to continue . . .

我现在的电脑内存是8G,但我知道我最多只用了3G(我的电脑大部分时间都在运行这个服务器文件)。我有2个4G的内存条,所以我知道它们没有被分开使用,而且我知道我有足够的空闲内存可以分配,那么为什么它不让我分配呢?我能够分配1536M(1.5G)及以下的内存,但如果我增加到2G,它就会出现这个错误。非常感谢您的帮助。


1
Windows的哪个版本?32位版本只能让你访问大约3GB的RAM。非服务器版本也被任意地削弱了,但不像那么多。 - user177800
我正在使用64位版本的Windows。编辑:删除最小RAM也没有起作用,原因未知。 - Xander Luciano
你的问题已经在这里得到了解答:链接 - NiranjanBhat
2个回答

6

请确保您使用的是64位版本的Java - 32位版本即使在64位Windows上也无法分配那么多内存。


我显然是在尝试使用32位安装版本而不是64位版本来启动这个程序,因此受到了限制。我刚刚将Java路径更改为C:\ Program Files \ Java \ jre7 \ bin \ java.exe,它可以正常工作了。谢谢。 - Xander Luciano
正如你所想象的那样,我已经犯过这个错误了 - 所以其他人就不必再犯了 ;) - Konstantin Pribluda

0

你只需要为Tomcat提供更多的空间。 为此,您需要进入Tomcat目录中的“bin”文件夹, 然后打开setenv.bat文件,将“MaxPermSize=256m”的大小增加, 512m应该足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接