ChatGPT解决这个技术问题 Extra ChatGPT

“虚拟机初始化过程中发生错误;无法为对象堆保留足够的空间”使用 -Xmx3G

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

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

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

这里发生了什么?

你有什么版本的java?你在什么操作系统上运行?
这是 Win7,我安装了 3 个不同的 Java 版本。其中之一是 Eclipse 使用的 32 位 JRE。
不要忘记将答案标记为正确。
只需使用您的合适空间更改 gridle.property 中的设置

L
Laurent

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


抱歉这个愚蠢的问题,但我该如何检查呢?以及如何使用 64 位?
实际上,我只是在命令行中尝试了 java -d64 -version,它提出了 64 位服务器 VM。
显然 Eclipse 使用的是我之前安装的 32 位版本的 JRE,尽管 64 位是最新安装的。我更改了 Preferences --> Installed JREs 中的设置来解决这个问题。非常感谢您的回答!
无论如何,32位不应该足以解决4gb吗?
应该是这样,但这解决了我的问题。由于缺乏解释,不赞成这个答案。 This link explains how a 32bit jvm can't go over 1gb max heap space
A
Adnan

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

将此更改为您的适当路径。


只是给别人的笔记。您添加一个 SYSTEM 变量,而不是一个 USER 变量。我在 Eclipse 中遇到了这个问题,并且在进行上述更改后不必重新启动我的机器......我只需要重新启动 Eclipse。谢谢!
对于好奇的人,_JAVA_OPTIONS 中的 -Xmx 标志指定了允许的最大 JVM 堆大小。这可以防止 JVM 请求不合理的空间(尤其是对于 32 位机器而言不可连续分配......)
C
Community

这实际上不是 Eclipse 特有的问题。这是一个一般的 Java-on-Windows 问题。这是因为 JVM 在 Windows 上分配内存的方式;它坚持分配连续的内存块,这通常是 Windows 无法提供的,即使有足够的单独块来满足分配请求。有一些实用程序会尝试帮助 Windows 对其内存进行“碎片整理”,从理论上讲,这将有助于解决这种情况;但我并没有真正认真地尝试过它们,所以不能谈论它们的有效性。我有时听到的一件事可能会有所帮助,那就是重新启动 Windows,然后在启动任何其他应用程序之前,启动需要大量内存的 Java 应用程序。如果幸运的话,Windows 还不会分割它的内存空间,而 Java 会得到所要求的连续块。

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

不过,我确实发现了这个,看起来很有帮助:https://stackoverflow.com/a/497757/639520


就我而言,您的答案似乎有效。我没有重新启动 Windows,但我尝试关闭 Windows 中的其他应用程序,然后运行 java,它能够启动 VM。
D
Daniel De León

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

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


P
Prathap

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


A
Adam Rofer

确保 Eclipse 实际上运行的是您认为它正在运行的同一 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 上,这还允许您实际“固定选项卡”,这就是为什么我必须为自己的使用这样做)


-vm 参数应该指向 Java 可执行文件,而不仅仅是一个文件夹。请参阅wiki.eclipse.org/%C2%A0eclipse.ini#Specifying_the_JVM
错误的。看到这个 Eclipse 错误:bugs.eclipse.org/bugs/show_bug.cgi?id=314805
确实是这个问题! Eclipse 使用的是我在某个时候安装的 32 位版本的 JRE。非常感谢您的回答并引导我朝着正确的方向前进!我非常感谢。
@AdamRofer,该错误很有趣,但特别是关于 Windows 7 以及解决将 Eclipse 固定到任务栏的问题。一般来说,eclipse.ini 应该指向 java 可执行文件,尽管 Equinox 启动器似乎很智能,因为如果 -vm 指向文件夹(至少在 Windows 上)它会查找 java 可执行文件。
@E-Riz“应该”对我的口味来说太严格了 :) 希望他们可以解决这个错误,而不必在某个时候更改 vm 参数。以下是有助于他们在 eclipse.ini 页面上更新的更多信息:wiki.eclipse.org/…
u
user1740626

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


l
lczapski

只需将 # 符号放在 gradle.properties 中的 org.gradle.jvmargs=-Xmx1536m 前面

 # org.gradle.jvmargs=-Xmx1536m

在 mac os 上尝试 Kotlin-multiplatform 时不确定它是如何工作的!无论如何,谢谢!
A
Ajit K'sagar

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


L
Lars

我知道我来晚了,但我的答案来了:

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

添加 JAVA_HOME ENV 变量后,它就可以工作了!

希望我能帮忙:)


M
Mateva

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

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。


s
sooribabu

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


佚名

解决方法很简单。无需深入探讨这个问题。

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

首先卸载 32 位 java(检查 C:\Program Files (x86) 是否存在)

安装较新版本的 JDK 工具包 64 位(包括 JRE)

设置环境路径(如果您有两个不同的 64 位 JRE,以避免冲突错误)

通过键入 javac 命令签入命令提示符。

重启/完成

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


v
vinay j

请在环境变量中设置 JAVA_OPTS=-Xms256m -Xmx512m,它应该可以解决问题,它对我有用。


T
Teja Goud Kandula

了解您使用的是 32 位版本还是 64 位版本的 Java。要知道使用命令

java -version

输出的第 3 行应该给你它是 32 位还是 64 位。

https://i.stack.imgur.com/hvmiT.png

如果是32bit卸载安装64bit版本。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅