Java无法为对象堆保留足够的空间错误。

28

我在32位Windows上安装了Java7并且有4GB的内存,但是:

java -Xmx4G -Xms4G -jar Minecraft.jar 
java -Xmx3G -Xms3G -jar Minecraft.jar 
java -Xmx2G -Xms2G -jar Minecraft.jar

......仍然无法运行。错误信息:

VM初始化时发生错误。
无法为对象堆保留足够的空间
错误:无法创建Java虚拟机。
错误:发生了致命异常。程序将退出。

java -Xmx1G -Xms1G -jar Minecraft.jar 能工作,为什么呢?


1
这可以通过Oracle Java FAQ中的解释来说明 - http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#gc_heap_32bit - Stephen C
更详细的答案可以在https://dev59.com/M3VC5IYBdhLWcg3w1E1q找到。 - Stephan Branczyk
1
如果您安装了64位版本的Java,它将直接工作。 - Omrum Cetin
9个回答

66

前往 开始控制面板系统高级系统设置高级(tab)环境变量系统变量新建:

Variable name: _JAVA_OPTIONS
Variable value: -Xmx512M

2
很好的方法,可以避免配置太多工具。谢谢。我尝试在VM实例上配置标志,但肯定做错了。使用系统变量要好得多,而且只需要一次。谢谢。 - m3nda
2
这个很顺利。我在IntelliJ中构建,但是不得不重新启动程序。 - Linda Lawton - DaImTo

10

如果你通过IBM的java链接 this,它说在32位windows系统下,推荐堆大小为1.5 GB,最大堆大小为1.8 GB。因此,如果使用-Xmx2G及以上参数,你的jvm将无法初始化。

另外,如果你查看this这个stackoverflow答案,显然DLL绑定是内存保留更改的问题,这并不是一个简单的任务。因此,建议使用64位Windows和64位JVM,虽然它会占用更多的RAM,但你将拥有更多连续的虚拟地址空间。


java -Xmx1240m -Xms1240m -jar Minecraft.jar仍然无法工作。 - Kemal Tunca
1
@KemalTunca 尝试使用 java -Xmx1240m -jar Minecraft.jar - rahulserver

9

1
减少内存设置对我完全没有用,但这个立即生效了。 - Blaise

9

这个问题也发生在我的电脑上,但解决起来非常简单。

  1. 你需要确保你的系统安装了正确的Java版本,如32位或64位。
  2. 如果你已经安装了正确的软件,但仍然遇到此问题,请前往

    控制面板系统高级系统设置(适用于Windows 8)或

    控制面板系统和安全系统高级系统设置(适用于Windows 10)。

  3. 你必须进入{高级}选项卡,然后点击{环境变量}。
  4. 你将会在<系统变量>下点击{新建}。
  5. 你将会创建一个新的变量。变量名称:_JAVA_OPTIONS 变量值:-Xmx512M

至少对我来说是这样解决的。


这个很顺利。我在IntelliJ中构建,但是不得不重新启动程序。 - Linda Lawton - DaImTo

3

为了确保运行64位的Java版本,请像这样进行设置:

"c:\ Program Files \ Java \ jre7 \ bin \ java.exe" -Xmx1536M -Xms1536M -XX:MaxPermSize = 256M -jar forge-1.6.4-9.11.1.965-universal.jar

务必查看您安装的JRE版本.. x64应该在Program Files中,而x32在Program Files(x86)中。


你忘记了加上 -d64 运算符。 - user2924019

2

拥有4GB内存并不意味着您可以全部用于Java进程。系统进程需要大量内存。

请勿超过2GB,否则可能会出现问题。

在启动JVM之前,请先检查可用的内存量,然后根据情况设置内存。


1
java -Xmx1240m -Xms1240m -jar Minecraft.jar 仍然无法运行。 - Kemal Tunca
在启动 JVM 之前,您能否在任务管理器中检查可用内存有多少? - Lokesh

1

双击 Liferay CE Server -> 添加 -XX:MaxHeapSize=512m 到内存参数 -> 启动服务器!

享受吧...

这对我很有用!


1
这是对我有效的解决方法(是的,我遇到了相同的问题): 在类似 java -Xmx3G -Xms3G 这样的地方替换为 java -Xmx1024M 因此,run.bat 应该看起来像这样: java -Xmx1024M -jar craftbukkit.jar -o false PAUSE

0

这是一个老话题。但是那些使用堆栈(如Bitnami WildFly 13)的人应该知道,堆栈安装有自己的Java引擎在\Bitnami\wildfly-13.0.0-1\java中。 在Windows上,安装采用堆栈Java自有引擎作为默认配置,并使用选项-client启动Java,即使系统中已经安装了其他Java引擎。您需要修改standalone.conf.bat以明确指定您的Java路径,并添加-server选项以及所需的内存分配。 例如:

set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_311”
set "JAVA_OPTS=-server -Xms2048M -Xmx4096M"
:JAVA_OPTS_SET
rem set "JAVA_HOME=C:\opt\jdk1.6.0_23\bin\java"

希望这能有所帮助。


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