记一次因为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
    • 截图

解决过程

  1. 调大idea的堆内存 不行 ×
    idea安装目录中找到 idea64.exe.vmoptions 将 Xms(初始堆内存)和Xmx(最大堆内存)均调整到2048M

  2. 项目跟路径的.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

  • 判断应该是Lombok出的问题
    4.将项目中所有使用lombok的地方全部换成原生java 编译通过 √
    5.将项目的Grdle版本换成4.10.2 编译通过 √

posted on 2020-08-12 15:34  朱春旺  阅读(7120)  评论(1编辑  收藏  举报