每次我试图运行该程序时,都会重复得到以下异常。

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

我试图增加我的虚拟内存(页面大小)和RAM大小,但没有效果。

我怎样才能消除这个错误?


当前回答

如果你正在运行一个java程序: -在终端上运行你的程序,使用正确的linux命令:'java -jar myprogram.jar'然后添加-Xms256m - xmx512m,例如:'java -jar myprogram.jar Xms256m - xmx512m '

如果你正在运行一个。sh脚本(linux, mac?)或一个。bat脚本(windows),打开脚本并寻找java选项,如果它们存在并增加内存。

如果以上都不起作用,检查你的进程(windows上的ctrl+alt+delete) (linux/mac上的ps aux),并杀死那些占用分配内存且对你的操作系统不需要的进程!试着重新运行程序。

其他回答

我有适量的内存设置,但对我来说,它是使用64位intellij和32位jvm。一旦我切换到64位虚拟机,错误就消失了。

不需要做任何事情,只是在POM文件更改如下

<configuration>
    <maxmemory>1024M</maxmemory>
</configuration>

32位Java需要内存中连续的空闲空间才能运行。如果指定较大的堆大小,则内存中可能没有那么多连续的空闲空间,即使可用的空闲空间比必需的大得多。

在这些情况下,安装64位版本的Java会有所帮助,因为连续内存要求只适用于32位Java。

我知道这里已经有很多答案了,但没有一个能帮到我。最后,我打开文件/etc/elasticsearch/jvm。选项和更改:

-Xms2G
-Xmx2G

to

-Xms256M
-Xmx256M

这为我解决了问题。希望这能帮助到这里的其他人。

这也可能是由于在32位HotSpot vm上设置过大而导致的,例如:

-Xms1536m -Xmx1536m

这可能/将会工作的地方:

-Xms1336m -Xmx1336m