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 系统属性 > 项目根目录 存储在 gradle.properties 文件中
3 Gradle 属性 > GRADLE_USER_HOME > 项目根目录 > GRADLE_HOME 存储在 gradle.properties 文件中
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

相关推荐
金銀銅鐵8 分钟前
[Java] 如何将 Lambda 表达式对应的类保存到 class 文件中?
java·后端
匆匆那年96736 分钟前
VSCode 远程 Linux 使用Codex
linux·ide·vscode
それども1 小时前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
正儿八经的少年1 小时前
application.yml 系列配置文件作用与区别
java·配置文件
鱼很腾apoc2 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
cheems95272 小时前
[Spring MVC] 统一功能与拦截器实践总结
java·spring·mvc
Full Stack Developme3 小时前
Spring Boot 事务管理完整教程
java·数据库·spring boot
城管不管3 小时前
前后端远程协作
java
青云计划3 小时前
Feed流
java·后端·spring
java1234_小锋3 小时前
String、StringBuilder、StringBuffer的区别?
java·开发语言