在 Intellij IDEA 中不断出现 Gradle 错误“无法为对象堆保留足够的空间”

Posted

技术标签:

【中文标题】在 Intellij IDEA 中不断出现 Gradle 错误“无法为对象堆保留足够的空间”【英文标题】:Getting Gradle error "Could not reserve enough space for object heap" constantly in Intellij IDEA 【发布时间】:2014-11-26 10:24:42 【问题描述】:

所以我的内存分配有问题。有时它有效,有时则无效。我已经阅读了this thread 并多次尝试了那里的建议。有时-Xms512m -Xmx768m 有效,有时-Xms256m -Xmx512m。我厌倦了不得不在 IntelliJ 中的 Build, Execution, Deployment > Build Tools > Gradle > Gradle VM 选项设置下调整此设置。没有设置可以一劳永逸地解决这个问题吗?

我的 Windows 7 计算机上有 16GB 的 RAM,我正在运行 IntelliJ IDEA EAP 14 build 138.2210.3,64 位版本。 android Gradle 构建插件 v0.12。

我怀疑 gradle 没有在 64 位模式下运行,否则它将有大约 7 GB 的可用内存可供使用。为什么不使用这个?

编辑:

我在 Windows 10 下使用 cordova 5.1.1Visual Studio 2015 中遇到了同样的错误。 请参阅下面的解决方案。

【问题讨论】:

【参考方案1】:

我在 Windows 10 下使用 cordova 5.1.1Visual Studio 2015 中遇到了同样的错误。

要解决这个问题,设置这个环境变量:

_JAVA_OPTIONS=-Xmx512M
    右键单击开始按钮并打开“系统” 搜索“高级系统设置”并打开它 点击“环境变量...”按钮 在系统变量中,点击“新建...” 新变量名称:_JAVA_OPTIONS 新变量值:-Xmx512M 点击确定 重新启动 Visual Studio,以便拾取变量

This 文章为我指明了正确的方向。我确实稍微更改了说明,因此它们适合 Windows 10。

希望它对某人有所帮助!

【讨论】:

谢谢!这个答案只是帮助我使用了新版本的 Android Studio。 谢谢,+1。这个答案解决了在 Windows 上使用 Apache Cordova 时的类似问题。 感谢 Bjoerg,+1, 太棒了。在 Windows 上使用 Cordova 时解决了我的问题。 +1 2021 年 12 月这对我有用。直接更改 gradle.properties 文件的选项会继续被覆盖。谢谢。【参考方案2】:

安装 64 位 Java 为我解决了这个问题

【讨论】:

这个解决方案适用于 Ionic 3.5.0 和 Windows10 @nilzor,JDK 还是 JRE? 我安装了 32 位和 64 位,并且 32 位版本在路径中。【参考方案3】:

虽然这个问题有点老,但我想提出问题的(可能)根本原因:JVM 在启动时请求一整块内存。如果找不到,则会出现“无法保留...”错误。 John Pape 在 IBM 的开发博客中写了一篇关于这个问题的启发性文章:https://www.ibm.com/developerworks/community/blogs/aimsupport/entry/why_wont_my_jvm_start_with_this_heap_size?lang=en

这为我解决了问题:

变体 a:使用 64 位版本的 Java,以便为 Java 提供更大的可能连接空闲内存区域 变体 b:使用 32 位 Java,使用较小的 XMX 数量。在 gradle.properties 文件中,我只使用了org.gradle.jvmargs=-Xmx150m,Gradle 没有任何问题。

【讨论】:

【参考方案4】:

这也发生在我身上,让我抓狂。可能是可用的内存 (ram) 是碎片化的。尽管您有足够的可用内存,但没有可用的连续 512MB 块,它们都被分割成更小的块!这就是为什么您只“有时”看到它的原因。

一些值得尝试的事情:

检查您是否内存不足,尝试关闭其他应用程序。这种情况有时会发生在我身上,即使我的 8GB 内存中仍有 3GB 可用!那 3GB 可以被分成所有小于 512MB 的块 [例如:如果你有 -Xmx512m]... 重新启动是一种整理内存的方法。或者关闭 Firefox,这样可以腾出一份工作;-)

另外,令人惊讶的是,检查您的交换空间 [可用磁盘空间]!取决于机器/JVM/etc 的实现。但是,如果您的交换空间不足并且您的内存碎片化,那可能是另一个原因。

将 -Xmx 降低到可能 -Xms128m -Xmx512m 以便更容易找到连续的空闲内存块 [128m]。如果 gradle 确实需要至少 512m,这可能不是一个好主意。鉴于我们正在谈论 gradle,请忽略此要点(对于其他情况可能是有用的提示/值得注意)。

在 ~/.gradle/gradle.properties 属性中仔细检查您的 Xms/Xmx:org.gradle.jvmargs

使用idea64.exe [64bit],如果您认为IDEA 使用了错误的JDK [32bit],在最新的Intellij IDEA [14.1.3 撰写本文时],请转到“设置”->“构建,Execution,Deployment" -> "Gradle": "use the default wrapper" 并选择你想要的 Gradle JVM(如果你认为它使用了错误的,你会在这里看到它。

李>

最后,这只是一个猜测,但是:在上一个项目符号中,我想知道您是否选择“使用项目 JDK”,如果这样更容易找到连续内存。我不确定这是否意味着 Gradle 将使用 intellij IDEA 已经保留的内存块。所以,不是有两个进程,你只有一个,你可以在 IDEA 启动时保留一个更大的内存块。但我不确定这是否是向 Intellij 建议的选项是否准确......

我同意你的观点,在 gradle 集成出现之前,我从来没有遇到过 IDEA 的任何内存问题[完全没有问题]。

【讨论】:

【参考方案5】:

在您的 android 文件夹中有一个gradel.properties 文件并添加以下行:

org.gradle.jvmargs=-XX\:MaxHeapSize\=256m -Xmx256m

我在使用 Intellij 和 Flutter 时遇到了这个问题。此外,您可能会发现添加的另一个有用的属性是声明 JDK 的位置。

org.gradle.java.home=C:\\Your\\JDK\\path

【讨论】:

【参考方案6】:

就我而言,我打开了太多东西。释放内存使其工作。

【讨论】:

【参考方案7】:

按照以下步骤操作:

1° 安装 Java SDK - 64 位或 32 位

https://www.oracle.com/br/java/technologies/javase/javase-jdk8-downloads.html

2°配置环境变量

Windows 10 -

2.1° - 控制面板 -> 系统和安全 -> 高级系统设置 -> 环境变量

2.2° - 在环境变量中,需要添加你安装的SDK的路径:

windows 32bits 点击添加-> 变量名:JAVA_HOME 变量值:C:\Program Files(x86)\Java\jdk1.8.0_291

windows 64bits 点击添加-> 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_291

按照以上步骤,应该可以正常运行了。

【讨论】:

以上是关于在 Intellij IDEA 中不断出现 Gradle 错误“无法为对象堆保留足够的空间”的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 14

深入学习 Intellij IDEA 调试技巧

IntelliJ IDEA 连接 mysql 数据库

使用IntelliJ IDEA过程中webpack无法热更新

安装打开IntelliJ IDEA出现 Error launching IDEA,麻烦大神解答下

IntelliJ IDEA 中Maven配置的 repositories update 出现 error 总结