記一次因為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 編譯通過 √


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM