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

Java “;VM初始化时出错;无法为对象堆”;保留足够的空间;使用-Xmx3G,java,eclipse,jvm,jvm-arguments,Java,Eclipse,Jvm,Jvm Arguments,首先,我有一个8gb内存的盒子,所以我怀疑总内存是个问题。 此应用程序在6gb或更低的计算机上运行良好 我试图在Eclipse的运行配置中使用-Xmx3G在“VM参数”下保留3GB的空间 每次我尝试保留超过1500mb的空间时,都会出现以下错误: 使用-Xmx3G“VM初始化期间出错;无法为对象堆保留足够的空间” 这里发生了什么?可能是您在该机器上使用了32位jvm吗?这实际上不是特定于Eclipse的问题;是将军 Java在Windows问题上的应用。这是因为JVM是如何分配内存的 窗户;它坚

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

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

每次我尝试保留超过1500mb的空间时,都会出现以下错误: 使用-Xmx3G“VM初始化期间出错;无法为对象堆保留足够的空间”


这里发生了什么?

可能是您在该机器上使用了32位jvm吗?

这实际上不是特定于Eclipse的问题;是将军 Java在Windows问题上的应用。这是因为JVM是如何分配内存的 窗户;它坚持分配一个连续的内存块,这 通常Windows无法提供,即使有足够多的独立块 满足分配请求。 有一些实用程序将尝试帮助Windows“整理”其内存, 从理论上讲,这将有助于这种情况;但我没有真正尝试过 他们是认真的,所以不能谈论他们的有效性。 我有时听到的一件事可能会有帮助,那就是重新启动Windows 并且,在启动任何其他应用程序之前,启动需要 一大块内存。如果幸运的话,Windows不会出现碎片化的问题 内存空间,Java将获得所需的连续块

互联网上的某些地方有更多的技术解释和 对这个问题的分析,但我手头没有任何参考资料


不过,我确实发现了这一点,这看起来很有帮助:

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

当然,我建议将这两行添加到顶部的
eclipse.ini
文件中:

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


(作为奖励,在Windows 7上,这还允许您实际“锁定选项卡”,这就是为什么我必须这样做以供自己使用)

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


第二,当一个新的JVM启动时,这将对所有正在运行的JVM的-Xmx属性求和,并检查系统上是否有足够的内存以自己的-Xmx运行,如果不够,则会发生错误。

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

我在eclipse IDE中将Liferay与Tomcat服务器一起使用。 我在点击服务器启动时也遇到了同样的错误。 从eclipse双击服务器。 它将打开服务器概览页面。将内存参数从-Xmx1024m-XX:MaxPermSize=256m更新为-Xmx512m-XX:MaxPermSize=256m。
当我使用32位Eclipse和64位JVM时,我也遇到了同样的问题。
当我将Eclipse路由到32位JVM时,它工作了

无论如何,您可能尝试了错误的选项。 我在支持错误日志时遇到类似错误:

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。

以下是修复方法: 进入
开始->控制面板->系统->高级(选项卡)->环境变量->系统

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

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

将其更改为您的适当路径

出现此问题的原因之一是没有内存可供Tomcat启动。尝试从windows中删除不需要的运行软件并重新启动eclipse和tomcat。

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

 # org.gradle.jvmargs=-Xmx1536m

我知道我有点晚了,但我的回答是:

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

在添加了JAVA_HOME ENV变量之后,它就开始工作了


希望我能帮忙:)

解决方案很简单。没有必要深入探讨这个问题

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

  • Unistall 32位java优先(检查C:\Program Files(x86)是否存在)
  • 安装更新版本的64位JDK工具包(包括JRE)
  • 设置环境路径(如果您有两个不同的64位JRE,则避免冲突错误)
  • 通过键入javac命令检入命令提示符
  • 重新启动/完成

您可以安装两个不同的Java,但不要忘记设置路径。

对于这个愚蠢的问题,很抱歉,但我如何检查?如何使用64位呢?事实上,我刚刚在命令行中尝试了java-d64版本,它提供了64位服务器VM。显然Eclipse使用的是我之前安装的32位版本的JRE,尽管64位是最新安装的。我更改了Preferences-->Installed JRE中的设置以解决此问题。非常感谢您的回答!在任何情况下,32位不应该足够处理4gb吗?应该足够,但这解决了我的问题。由于缺乏解释,所以不对这个答案投赞成票。你有什么版本的java?你运行的是什么操作系统?这是Win7,我安装了3个不同的Java版本。其中之一是Eclipse使用的32位JRE。别忘了将答案标记为正确。只需使用sutaible space更改gridle.property中的设置,-vm参数应指向Java可执行文件,而不仅仅是文件夹。我看错了。看看这个Eclipse bug:这确实是个问题!Eclipse使用的是我在某个时候安装的32位版本的JRE。非常感谢您的回答,并引导我进入正确的方向