Gradle提示内存溢出怎么办 Gradle内存参数调整方法【设置】
Gradle构建OOM错误需立即调整内存参数:在项目根目录gradle.properties中添加org.gradle.jvmargs=-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8;全局配置可设于~/.gradle/gradle.properties;Android项目还需在app/build.gradle中配置dexOptions { javaMaxHeapSize "4g" };命令行可临时用-Dorg.gradle.jvmargs="-Xmx6144m"应急。

Gradle构建时突然弹出“OutOfMemoryError: Java heap space”错误,项目卡在编译或打包阶段无法继续,说明当前JVM堆内存已耗尽,必须立即调整内存参数才能恢复构建流程。
修改项目级gradle.properties文件
打开项目根目录下的gradle.properties文件(若不存在则新建),在末尾添加或替换以下配置行:
【org.gradle.jvmargs=-Xmx4096m -Xms2048m -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8】
这一步直接决定Gradle守护进程可用内存上限。-Xmx4096m是核心参数,将最大堆内存设为4GB;-Xms2048m设初始堆为2GB,避免频繁扩容开销;-XX:MaxMetaspaceSize=1g替代已废弃的-XX:MaxPermSize,适配Java 8+;-XX:+HeapDumpOnOutOfMemoryError会在OOM时自动生成堆转储文件,方便后续分析。
保存后重启IDE或终端,下次执行./gradlew build即生效。
全局配置(高优先级覆盖)
当多个项目反复出现OOM,或项目级配置未生效时,需在Gradle用户主目录下强制设置:
Windows路径:C:\Users\{用户名}\.gradle\gradle.properties
macOS/Linux路径:~/.gradle/gradle.properties
在该文件中写入相同jvmargs配置,其优先级高于项目根目录配置,可确保所有本地Gradle项目统一使用更大内存。
注意:若该目录下无gradle.properties文件,需手动创建,不要依赖IDE自动创建——有些IDE版本会忽略此路径。
模块级DEX编译专项优化
针对Android项目中app模块编译时因类数量多触发DEX阶段OOM的情况:
打开app/build.gradle文件,在android { }块内添加:
dexOptions { javaMaxHeapSize "4g" }
该配置仅作用于DEX工具(如D8/R8)的独立JVM进程,与Gradle守护进程内存分离。对于含数百个module或大量第三方SDK的项目,此项能避免“UNEXPECTED TOP-LEVEL ERROR”类报错。
Android Gradle Plugin 7.0+已默认禁用dexOptions,若提示过时,请改用android { compileOptions { } }或升级R8配置。
命令行临时调大内存(应急用)
方法一:直接追加JVM参数启动
./gradlew build -Dorg.gradle.jvmargs="-Xmx6144m"
方法二:通过环境变量覆盖(Linux/macOS)
export GRADLE_OPTS="-Xmx6144m" → 再运行./gradlew build
命令行方式优先级最高,适合CI流水线或单次调试场景。但每次都要输入,不适合日常开发。