在 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.1 在 Visual Studio 2015 中遇到了同样的错误。 请参阅下面的解决方案。
【问题讨论】:
【参考方案1】:我在 Windows 10 下使用 cordova 5.1.1 在 Visual 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过程中webpack无法热更新