每次我试图运行该程序时,都会重复得到以下异常。
虚拟机初始化时出错 无法为对象堆预留足够的空间 无法创建Java虚拟机。
我试图增加我的虚拟内存(页面大小)和RAM大小,但没有效果。
我怎样才能消除这个错误?
每次我试图运行该程序时,都会重复得到以下异常。
虚拟机初始化时出错 无法为对象堆预留足够的空间 无法创建Java虚拟机。
我试图增加我的虚拟内存(页面大小)和RAM大小,但没有效果。
我怎样才能消除这个错误?
当前回答
我最近遇到了这个问题。我有3个java应用程序,起始堆大小为1024m或1280m。 Java查看交换中的可用空间,如果没有足够的可用内存,则jvm退出。
为了解决这个问题,我不得不终止几个分配了大量虚拟内存的程序。
我在x86-64 linux和64位jvm上运行。
其他回答
这也可能是由于在32位HotSpot vm上设置过大而导致的,例如:
-Xms1536m -Xmx1536m
这可能/将会工作的地方:
-Xms1336m -Xmx1336m
有时它与
$ sysctl vm.overcommit_memory
vm.overcommit_memory = 2
如果你设置为:
$ sysctl vm.overcommit_memory=0
它应该会起作用。
32位Java需要内存中连续的空闲空间才能运行。如果指定较大的堆大小,则内存中可能没有那么多连续的空闲空间,即使可用的空闲空间比必需的大得多。
在这些情况下,安装64位版本的Java会有所帮助,因为连续内存要求只适用于32位Java。
不管怎样,下面是解决方法: 单击“开始”->控制面板->系统->高级(tab)->环境变量->系统变量->新建: 变量名:_JAVA_OPTIONS 变量值:-Xmx512M
OR
更改ant调用,如下所示。
<exec
**<arg value="-J-Xmx512m" />**
</exec>
这对我很管用。
我也有类似的问题。我在一台64位机器上安装了32位版本的Java。
通过卸载该版本并安装64位版本的Java。我解决了这个问题。