虚拟机初始化出错 无法为对象堆保留足够的空间 无法创建Java虚拟机

12

我遇到了这个问题一个多月了,当我在命令行上运行Java时,看到的是这样的:

$ java -Xmx1300m 
Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.

如果我使用较少的内存运行,它可以正常工作。

$ java -Xmx1240m Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) ..... .....

我花了一周时间调试这个问题,什么都没用。最后我让我的IT支持小组更换了笔记本电脑。这发生在一个月前的10/23。现在,一个月之后,同样的问题又出现在我的新系统上。

我的系统配置如下:

Win 7 Enterprise (64-bit), Service Pack 1. Intel(R) Core(TM) i7-2640M CPU @ 2.80GHz 8.00 GB RAM

Java: java version "1.5.0_20" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_20-b02) Java HotSpot(TM) Client VM (build 1.5.0_20-b02, mixed mode)

我们这里有一个由大约30个人组成的团队,而我是唯一一个遇到这个问题的人。其他人几乎都有相同的配置,他们的工作正常。

一个重要的观察结果是Java在运行一段时间后就正常工作,但一旦出现问题,即使我重新安装Java也无法解决。

在IT支持人员重新安装我的笔记本电脑后,我第三次遇到了这个问题。它能够正常工作一个月,现在同样的问题又出现了。

每个人都完全不知所措。我现在开始使用两台笔记本电脑。 :-)


1
你尝试过64位版本的Java吗? - user253751
您是否有其他大型进程正在运行?数据库服务器?Web 服务器?您的笔记本电脑的内存负载是多少?您的页面文件有多大?您是否真的在运行32位版Java(如果是,那几乎肯定是您的问题)?为什么要运行Java 5?它已经过时了。 - Jim Garrison
是的,它可以工作,但我们的产品使用32位Java,我不能做出这个决定,因为每个人都使用相同的。 - sanjaygarde
我安装了64位的JDK而不是32位的。 - PHPGuru
8个回答

16

无论如何,以下是如何解决的:

转到开始->控制面板->系统->高级(tab)->环境变量->系统变量->新建:

变量名:_JAVA_OPTIONS

变量值:-Xmx512M

摘自这个链接


如果您正在使用Cordova,请参阅http://taco.visualstudio.com/en-us/docs/tips-and-workarounds-android-readme/#could-not-create-java-virtual-machine-error。 - BrunoLM

15

幸好!我终于找到了一个解决方法。

这是由于Windows更新阻止64位机器上的任何32位进程消耗超过1200 MB的原因。您唯一可以修复此问题的方法是在Win 7上使用系统还原选项。

开始 >> 所有程序 >> 辅助工具 >> 系统工具 >> 系统还原。

然后恢复到Java正常工作的日期。这对我有用。令人惊讶的是,即使您禁用所有Windows更新,Windows仍然以“关键更新”的名称推送系统更新。 ^&<em>%)#

* Windows :-)


8

如果您正在64位计算机上运行32位JVM(JDK),也可能会出现此问题,请将其切换到64位JVM。请检查您的(右键单击我的电脑 ->属性)控制面板\系统和安全\系统 ->高级系统设置 ->高级选项卡 ->环境变量 ->JAVA_HOME...


3

谢谢。我将堆空间从2000MB改为1024MB,然后它就起作用了...


4
如何更改堆空间? - Jitendra
如何更改头部空间? - nathandrake

1

我刚刚遇到了这个问题,使用的是Jboss AS7和jdk1.5.0_09。将系统属性JAVA_HOME更新为jdk1.7+即可解决(我正在使用jdk1.7.0_67)。


1

如果您的计算机是64位的,您只需要卸载您的Java x86版本并安装64位版本即可。我遇到过相同的问题,这样做可以解决。无需进行进一步操作。


0

您可以在_JAVA_OPTIONS中更新用户路径:-Xmx512M 路径:C:\Program Files (x86)\Java\jdk1.8.0_231\bin;C:\Program Files(x86)\Java\jdk1.8.0_231\jre\bin 目前它正在工作。


-1
有时候你可能会在同一个Java虚拟机上运行多个应用程序。如果你已经尝试了上述所有其他解决方案,但仍然无法解决问题,那么可以尝试通过传递vmargs参数,在新创建的Java虚拟机上运行进程。
-agentlib:jdwp=transport=dt_socket,server=y,address=10049,suspend=n . 

这里的地址是虚拟机所使用的地址。


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