• 记一次因为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 编译通过 √
  • 相关阅读:
    树的同构
    最大子列和
    多项式的表示和运算
    图1
    集合及运算
    树4
    树3
    树2
    期末作业验收
    个人总结
  • 原文地址:https://www.cnblogs.com/zhucww/p/13490860.html
Copyright © 2020-2023  润新知