首页 文章

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

提问于
浏览
71

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

我试图在Eclipse的Run Configurations中的“VM Arguments”下使用-Xmx3G保留3GB的空间 .

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

这里发生了什么?

10 回答

  • 1

    确保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上,这也允许您实际“固定标签”,这就是为什么我必须为自己的用法这样做)

  • 0

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

  • 58

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

  • 37

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

  • 8

    以下是解决方法: Go to 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;
    

    将其更改为 appropriate path .

  • 4

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

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

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

  • 0

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

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

  • 13

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

  • 46

    也许你正在尝试错误的选择 . 我在支持错误日志时遇到了类似的错误:

    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 .

  • 20

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

相关问题