在 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 错误“无法为对象堆保留足够的空间”的主要内容,如果未能解决你的问题,请参考以下文章