“VM初始化期间出错;无法使用-Xmx3G为对象堆保留足够的空间

时间:2012-02-16 00:37:39

标签: java eclipse jvm jvm-arguments

首先,我有一个8gb内存的盒子,所以我怀疑总内存是什么问题。 此应用程序在6GB或更低的计算机上运行良好。

我试图在Eclipse中的“运行配置”中的“VM Arguments”下使用-Xmx3G保留3GB的空间。

每当我尝试保留超过1500mb时,我都会收到此错误: “VM初始化期间出错;无法使用-Xmx3G

为对象堆保留足够的空间

这里发生了什么?

13 个答案:

答案 0 :(得分:60)

可能是你在那台机器上使用32位jvm吗?

答案 1 :(得分:50)

以下是修复方法: 转到 Start->Control Panel->System->Advanced(tab)->Environment Variables->System

Variables->New:
Variable name: _JAVA_OPTIONS   
Variable value: -Xmx512M

Variable name: Path  
Variable value: ;C:\Program Files\Java\jre6\bin;F:\JDK\bin;  

将此更改为适当的路径

答案 2 :(得分:39)

这实际上不是特定于Eclipse的问题;这是一般的 Java-on-Windows问题。这是因为JVM如何分配内存 视窗;它坚持分配一块连续的内存,这个 经常Windows无法提供,即使有足够的单独块 满足分配请求。 有些实用程序会尝试帮助Windows“碎片整理”其内存, 从理论上讲,这将有助于这种情况;但我还没试过 他们认真,所以不能说出他们的有效性。 我听过有时可能有帮助的一件事是重启Windows 并且,在启动任何其他应用程序之前,启动需要的Java应用程序 大块的记忆。如果你很幸运,Windows将不会支离破碎 内存空间和Java将获得要求的连续块。

在互联网的某个地方有更多的技术解释和 分析这个问题,但我没有任何参考方便。

我确实找到了这个,看起来很有用:https://stackoverflow.com/a/497757/639520

答案 3 :(得分:20)

首先,32位的JRE不能使用更多~1.5Gb的ram。因此,如果您想要更多,请使用64位JRE。

其次,当一个新的JVM启动时,这会将所有正在运行的JVM的-Xmx属性相加,并检查系统上是否有足够的内存在自己的-Xmx上运行,如果还不够,那么发生错误。

答案 4 :(得分:15)

我在Eclipse IDE中使用Liferay和Tomcat服务器。 点击服务器启动时我遇到了同样的错误。 双击eclipse中的服务器。 它打开了服务器概述页面。更新了-Xmx1024m -XX的内存参数:MaxPermSize = 256m至-Xmx512m -XX:MaxPermSize = 256m。 然后它为我工作。

答案 5 :(得分:8)

确保Eclipse实际上运行您认为正在运行的JVM。如果您曾经在Web浏览器中使用过Java,那么您可能会有一个32位版本,如果最近安装或更新它可能会优先考虑。

为了绝对确定,我建议将这两行添加到顶部的eclipse.ini文件中:

-vm 
C:/Java/jdk1.6.0_27/bin

...在我的机器C:/Java/jdk1.6.0_27/bin上的位置,我所知道的JVM是64位。请确保在那里有bin文件夹。

(作为奖励,在Windows 7上,这也允许你实际“固定标签”,这就是为什么我必须为自己的用途这样做)

答案 6 :(得分:4)

这是堆大小的问题。编辑.bat(批处理文件)。它可能显示堆大小1024.将其更改为512然后它应该工作。

答案 7 :(得分:2)

在使用32位的Eclipse时,我也遇到了同样的问题,它使用的JVM是64位。 当我将Eclipse路由到32位JVM时,它就可以工作了

答案 8 :(得分:1)

我知道我来晚了,但是我的答案来了:

我刚刚从Oracle安装了Java在线版本(不是离线的64位版本)。

添加JAVA_HOME ENV变量后,它就可以正常工作!

希望我能帮助您:)

答案 9 :(得分:0)

无论如何你可能正在尝试错误的选择。 我在支持错误日志方面遇到了类似的错误:

Java HotSpot(TM) Client VM warning: ignoring option PermSize=32M; support was removed in 8.0
Java HotSpot(TM) Client VM warning: ignoring option MaxPermSize=128M; support was removed in 8.0

就我的情况而言,该软件还不支持java 8(脚本使用旧的JVM参数)但我默认使用了java 8。

答案 10 :(得分:0)

此问题的原因之一是Tomcat无法启动内存。尝试从Windows中删除不需要的运行软件,然后重新启动eclipse和tomcat。

答案 11 :(得分:0)

只需在gradle.properties的#前面放置org.gradle.jvmargs=-Xmx1536m符号

 # org.gradle.jvmargs=-Xmx1536m

答案 12 :(得分:0)

解决方案是简单的。无需深入探讨这个问题。

如果您在 64 位 机器上运行,请按照以下步骤操作:

  • 反安装32位Java第一(在C检查:\程序文件(x86),用于它的存在)
  • 安装较新的版本JDK套件64位(包括JRE)
  • 设置环境路径(避免冲突错误,如果你有两个不同的64位JRE)
  • 通过键入 javac 命令签入命令提示符。
  • 重新启动/完成

您可以有两个不同的Java安装,但不要忘了设定的路径。