记一次因为Gradle与Lombok不兼容导致编译时的内存溢出 Expiring Daemon because JVM heap space is exhausted
1.现象
- 版本
- Gradel:6.1.1 / 6.5.1
- Lombok:1.8.6 / 1.8.10
- 截图
解决过程
-
调大idea的堆内存 不行 ×
idea安装目录中找到 idea64.exe.vmoptions 将 Xms(初始堆内存)和Xmx(最大堆内存)均调整到2048M
-
项目跟路径的.Gradle文件下新增配置文件gradle.properties 不行 ×
#开启线程守护,第一次编译时开线程,之后就不会再开了
org.gradle.daemon=true
#配置编译时的虚拟机大小
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#开启并行编译,相当于多条线程再走
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true
3. 发现项目跟路径中生成了一个800多兆的文件
- 使用jhat工具打开
jhat -J-Xms2048m java_pid35240.hprof
-
使用浏览器访问 http://localhsot:7000
-
最下面找到 Show heap histogram 打开
- 判断应该是Lombok出的问题
4.将项目中所有使用lombok的地方全部换成原生java 编译通过 √
5.将项目的Grdle版本换成4.10.2 编译通过 √