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

Posted

技术标签:

【中文标题】Java 无法为对象堆错误保留足够的空间【英文标题】:Java Could not reserve enough space for object heap error 【发布时间】:2013-08-05 02:37:29 【问题描述】:

我在 32 位 Windows 和 4 GB RAM 上运行 Java7,但是:

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

...还是不行。错误:

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

java -Xmx1G -Xms1G -jar Minecraft.jar 正在工作。为什么?

【问题讨论】:

Oracle Java FAQ 对此进行了解释 - oracle.com/technetwork/java/… 一些更详细的答案可以在***.com/questions/171205/…找到 如果你安装64位版本的java,它会直接工作。 【参考方案1】:

转到StartControl PanelSystemAdvanced system settingsadvanced(tab)Environment VariablesSystem VariablesNew

Variable name: _JAVA_OPTIONS
Variable value: -Xmx512M

【讨论】:

避免配置这么多工具的好方法。谢谢。我试图在 VM 实例上配置标志,但可以肯定我做错了。使用系统变量要好得多,而且只需一次。谢谢。 这就像一个魅力。我在 IntelliJ 中构建,但不得不重新启动程序【参考方案2】:

如果您通过 java 上的 this IBM 链接,它说在 32 位 Windows 上推荐的堆大小为 1.5 GB,最大堆大小为 1.8 GB。因此,您的 jvm 不会为 -Xmx2G 及更高版本初始化。

此外,如果您通过this SO 回答,显然 DLL 绑定是内存预留更改的问题,这不是一项简单的任务。因此,可能建议您使用 64 位 Windows 和 64 位 JVM。虽然它会占用更多 RAM,但您将拥有更多连续的虚拟地址空间。

【讨论】:

java -Xmx1240m -Xms1240m -jar Minecraft.jar 仍然不起作用。 @KemalTunca 尝试 java -Xmx1240m -jar Minecraft.jar【参考方案3】:

这发生在我身上,而且很容易解决。

    您必须确保您的系统具有正确的 Java,例如 32 位或 64 位。

    如果你已经安装了正确的软件,但它仍然比 goto 发生

    control panelsystemadvanced system settings 适用于 Windows 8 或

    control panelsystem and securitysystemadvanced system settings 适用于 Windows 10。

    您必须转到高级选项卡,然后点击环境变量。 您将点击<system variables> 下的新建 您将创建一个新变量。变量名:_JAVA_OPTIONS 变量值:-Xmx512M

至少这对我有用。

【讨论】:

这就像一个魅力。我在 IntelliJ 中构建,但不得不重新启动程序。【参考方案4】:

我遇到了这个问题。我通过下载 64 倍的 Java 解决了这个问题。这是链接:http://javadl.sun.com/webapps/download/AutoDL?BundleId=87443

【讨论】:

设置更少的内存对我来说根本不起作用,但这立即奏效了。【参考方案5】:

为了确保它运行 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应该在程序文件中,而x32应该在程序文件中(x86)

【讨论】:

您错过了-d64 运算符【参考方案6】:

4gb RAM 并不意味着您可以将其全部用于 java 进程。系统进程需要大量 RAM。 不要超过2GB,否则会有些麻烦。

在启动 jvm 之前,只需检查有多少 RAM 可用,然后相应地设置内存。

【讨论】:

java -Xmx1240m -Xms1240m -jar Minecraft.jar 仍然不起作用。 在启动jvm之前,可以在任务管理器中查看,有多少内存可用?【参考方案7】:

这对我有用(是的,我遇到了同样的问题) 是说类似java -Xmx3G -Xms3G put java -Xmx1024M 所以 run.bat 应该看起来像 java -Xmx1024M -jar craftbukkit.jar -o false PAUSE

【讨论】:

【参考方案8】:

双击Liferay CE Server -> 将-XX:MaxHeapSize=512m 添加到Memory args -> 启动服务器! 享受...

这对我有用!

【讨论】:

以上是关于Java 无法为对象堆错误保留足够的空间的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch安装插件:无法为对象堆保留足够的空间

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

在 Intellij IDEA 中不断出现 Gradle 错误“无法为对象堆保留足够的空间”

“虚拟机初始化过程中发生错误;无法为对象堆保留足够的空间”使用 -Xmx3G

Intellij 偶尔无法为对象堆保留足够的空间

无法启动守护进程...无法为 2097152KB 对象堆保留足够的空间