因 JVM 堆空间耗尽而过期的守护进程?

17

我刚刚将Android Studio升级到3.5.0版本,正在构建时出现了“Expiring Daemon because JVM heap space is exhausted”错误提示。此外,构建所需时间更长了。有没有人知道这个错误的原因并可以帮助我解决?


我遇到了同样的错误,我在互联网上阅读了很多文档,但是没有找到任何解决方案,我被迫将我的电脑中的所有东西删除并重新安装。 - Mohsen Haghighatkhah
1
在Windows中,您可以添加一个名为_JAVA_OPTIONS的系统环境变量,并在那里设置堆大小值。像这样:SET _JAVA_OPTIONS = -Xms512m -Xmx1024m - Viral Patel
在@ViralPatel的建议后尝试系统重启。 - LonelyCpp
5个回答

52

我曾遇到同样的问题,下面的答案有所帮助,不过需要根据 React Native 进行适当修改。

https://dev59.com/tFMI5IYBdhLWcg3wfrls#57548822

请将你的 gradle.properties 修改为以下内容:

android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

请在你的app/build.gradle文件中的android任务下添加以下内容:

android {

  dexOptions {
    javaMaxHeapSize "4g"
  }

}

14

当您向应用程序添加更多模块时,会对Android构建系统产生巨大的需求,而默认的内存设置将无法工作。为避免在Android构建过程中出现OutOfMemoryErrors,请取消注释位于/android/gradle.properties中的替代gradle内存设置:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

不确定这是否适用于Gradle 7及以上版本。 - Parag Kadam

1

经过尝试以下几种解决方案,以下代码最终解决了错误

gradle.properties中添加以下内容

org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx1028m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

0
解决方案: 1) 在android/app/build.gradle中添加以下内容:
android: {
...
   dexOptions {
      javaMaxHeapSize: "4g"
   }
}

在android/gradle.properties中添加以下内容:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx4096m

你需要使用以下代码:dexOptions { javaMaxHeapSize "4g" }而不是:dexOptions { javaMaxHeapSize: "4g" }请注意:冒号(:)不应该出现在代码中。否则,你会得到一个错误:“如果尝试配置名为'javaMaxHeapSize'的属性,请将':'替换为'='或' ',否则它将无法产生所需的效果。” - Lalit Sharma

0

只需在gradle-wrapper-properties中添加此行:

org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

这里的-Xmx4g将提供4Gb的dex大小,与javaMaxHeapSize相同。XX:MaxPermSize是要分配的永久堆大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接