我有一个30K类的项目模块。 将声纳分析从ant脚本迁移到gradle插件后,出现OOM错误,输出如下:
13:10:36内存不足
13:10:36总记忆:954M
13:10:36自由记忆:119M13:10:52引起:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:超出GC开销限制
13:10:52
13:10:52 at org.sonar.plugins.findbugs.FindbugsExecutor.execute(FindbugsExecutor.java:163)
13:10:52 ... 109更多
13:10:52引起:java.lang.OutOfMemoryError:超出GC开销限制
我们使用以下参数运行ant脚本" -Xmx3800m -XX:ReservedCodeCacheSize = 128m"
如何为sonarqube gradle插件设置相同的参数?
我在调用gradle
之前尝试设置以下env变量GRADLE_OPTS = -Xmx3800m -XX:ReservedCodeCacheSize = 128m
它已正确应用,但是findbugs仍然失败并打印"总内存:954M"
此外,我还尝试添加以下属性以减少内存消耗,但没有任何运气
property 'sonar.skipPackageDesign', 'true'
property 'sonar.skipDesign', 'true'
Gradle版本为3.5
Sonarqube插件版本为2.5
jdk版本是8u131
答案 0 :(得分:0)
检查build.gradle文件并设置maxHeapSize,如下所示,
tasks.withType(FindBugs) {
maxHeapSize = "1000m"
}
您可以更改堆大小。
答案 1 :(得分:0)
我意识到问题是什么 设置GRADLE_OPTS是正确的解决方案,但我也使用了gradle守护进程,因此守护进程忽略了这些选项。 我最后通过向GRADLE_OPTS添加-Dorg.gradle.daemon = false来禁用守护进程并且它有效。