141

我刚刚将 Android Studio 更新到 3.5 Beta 1,我得到了

因 JVM 堆空间已用尽而过期的守护进程

构建运行时的消息。此外,构建需要更多时间才能完成。有人对此有任何想法吗?

4

4 回答 4

151

通过配置以下内容,我能够为我的React Native项目解决这个问题:

// gradle.properties
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

// app/build.gradle
android {
    dexOptions {
       javaMaxHeapSize "3g"
    }
}
于 2019-08-18T22:33:50.107 回答
141

这可以通过增加项目的配置最大堆大小来解决。

通过IDE:

将以下行添加到 gradle.properties 文件中。可以根据 RAM 可用性配置以下内存大小

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

通过图形用户界面:

在设置中,搜索“内存设置”并根据系统 RAM 可用性增加IDE 最大堆大小守护进程最大堆大小。

Android Studio 中的内存设置

于 2019-08-08T08:48:02.017 回答
47

解决方案是增加 Android 构建内存。

当您向应用程序添加更多模块时,对 Android 构建系统的需求令人难以置信,并且默认内存设置将不起作用。为了避免在 Android 构建期间出现OutOfMemoryErrors ,您应该取消注释 /android/gradle.properties 中存在的备用gradle内存设置:

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

您可以在android文件夹中找到 gradle.properties 。

附言

我们在做什么以及为什么它有帮助?

让我澄清一些基本术语,以了解整个事情。

守护进程: - 守护进程是作为后台进程运行的计算机程序,而不是在交互式用户的直接控制之下。

Android Studio 2.1启用了一项新功能:Dex In Process,它可以显着提高完全干净构建的速度并提高 Instant Run 性能。

要利用Dex In Process,您需要修改 gradle.properties 文件,并使用 org.gradle.jvmargs 属性将分配给Gradle Daemon VM的内存量增加1 Gb,至少达到 2 Gb :

指定用于守护进程的 JVM 参数。该设置对于调整内存设置特别有用。

org.gradle.jvmargs=-Xmx2048m

默认值:

-Xmx10248m -XX:MaxPermSize=256m

默认Gradle Daemon VM内存分配为 1 GB — 这不足以支持 dexInProcess,因此您需要将其设置为至少 2 GB。

Dex in process works by allowing multiple DEX processes to run within a single VM that’s also shared with Gradle, which is why you need to allocate the extra memory before it can be enabled — that memory will be shared between Gradle and multiple DEX processes.

If you’ve increased the javaMaxHeapSize in your module-level build.gradle file beyond the default of 1 gigabyte, you’ll need increase the memory assigned to the Gradle Daemon correspondingly.

When there’s enough memory assigned Dex in Process is enabled by default, improving overall build performance and removing the overhead of starting multiple parallel VM instances. The result is a significant improvement in all build times, including Instant Run, incremental, and full builds.

来源: https ://medium.com/google-developers/faster-android-studio-builds-with-dex-in-process-5988ed8aa37e

https://rnfirebase.io/#increasing-android-build-memory

于 2020-03-24T11:27:25.967 回答
1

就我而言,这可能是某种 gradle bug。我们实际上没有记忆问题,但消息不断出现。我的解决方案是:

gradlew --no-daemon

于 2021-06-22T07:00:55.373 回答