idea报GC overhead limit exceeded

Posted by JJput on 10-09,2022

报错信息

主要报错信息

Failed to notify build listener.
> GC overhead limit exceeded

idea报错

image-20221009111617439

解决方案

解决方案看这篇CSDN博客,亲测有效。

在工程根目录下新建gradle.properties文件

image-20221009110832838

并加入以下配置

#开启线程守护,第一次编译时开线程,之后就不会再开了
org.gradle.daemon=true
#配置编译时的虚拟机大小
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#开启并行编译,相当于多条线程再走
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true

我这边也尝试了一下在/Users/xxx/.gradle/中添加gradle.properties配置,是不生效的。

image-20221009111925201

但我们从.gradle/gradle.properties中发现,默认内存是1024M

image-20221009112549455

参数配置详解

虽然已经有了解决方案,正好趁这个机会好好探究以下gradle.properties配置,不然知其然不知其所以然,顺便整一个统一模板出来。

根据前文,和我个人经验,目前主要有两个目的:

  1. user/.gradle/gradle.properties配置无效,有没有其他办法一次性配置生效。
  2. 设定好常用配置,最好能提效!

全局配置

我google一圈,发现了这篇文章Gradle(二) build 环境配置,讲的很全面!!

里面有个重要信息

image-20221009113925308

我的idea Gradle配置如下

image-20221009114016391

我去gradle-6.8.3根目录下添加gradle.properties,然后重新编译,为了严谨性,idea重启后重新编译,通过了!

并没有报内存溢出问题。

说明配置成功了!!

那么问题来了,之前用户.gradle/gradle.properties为何没效果,跟Gradle(二) build 环境配置作者说的有悖论!

问题重新定位为:“.gradle/gradle.properties不生效”

再次Google一下

解决 mac 下 ~/.gradle/gradle.properties 设置不生效问题

至此问题已经迎刃而解了~

之前那篇作者说的GRADLE_USER_HOME是指环境变量~~,并不是我理解的user/.gradle/gradle.properties,害。。。一开始理解就有误

常用配置

#配置编译时的虚拟机大小
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#Gradle 将使用上一次构建的 Task outputs,这个选项通常会让构建更快。
org.gradle.caching=true
#指定 Gradle 最多使用的工作进程数。默认值为CPU的处理器数
#org.gradle.workers.max=2
#将会启用 Gradle 的守护进程,推荐开启,这将会大大减少多次构建的重复初始化 的资源消耗
org.gradle.daemon=true
#在指定的空闲毫秒数后,Gradle守护程序将自行终止。默认值为10800000(3小时)
org.gradle.daemon.idletimeout=3600000
#JVM 将会使用 org.gradle.workers.max 所设置的工作进程数来并行的执行构建
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true

最后感谢一下Gradle(二) build 环境配置的作者,写的太好了!