IDEA Gradle并行编译内存溢出问题
Expiring Daemon because JVM Tenured space is exhausted
Daemon will be stopped at the end of the build after running out of JVM memory
配置优先级
配置 Gradle 行为时,可以使用这些方法,但必须考虑它们的优先级。
下表列出了这些方法,按优先级从高到低排列(第一个优先级最高)
优先级 | 方法 | 位置 | 备注 |
---|---|---|---|
1 | 命令行 | > 命令行 | 标志优先于属性和环境变量 |
2 | 系统属性 | > 项目根目录 | 存储在 |
3 | Gradle 属性 | > | 存储在 |
4 | 环境变量 | > 环境变量 | 由执行 Gradle 的环境提供 |
https://docs.gradle.org.cn/current/userguide/build_environment.html#priority_for_configurations
全局配置解决方法:
- 参考Gradle配置官方文档,一定要在
GRADLE_USER_HOME 下面配置 gradle.properties
默认情况下GRADLE_USER_HOME和GRADLE_HOME目录是没有 gradle.properties 文件的,要手动新建一个
gradle.properties 写入下面这些参数,读取的顺序是 GRADLE_USER_HOME >
项目根目录 >GRADLE_HOME,高优先级的参数覆盖低优先级的,最终所有位置都会遍历一遍
#开启线程守护,第一次编译时开线程,之后就不会再开(Gradle3.0之后默认开启这个,可以不加)
org.gradle.daemon=true
#配置编译时的虚拟机大小(不需要dump可以去掉)
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#开启并行编译,相当于多条线程构建(全局配置,不加--parallel也会并行编译)
org.gradle.parallel=true
#启用新的孵化模式(实际上是configureondemand按需配置,不知道有什么作用)
org.gradle.configureondemand=true