【发布时间】:2019-10-25 16:11:19
【问题描述】:
所以基本上当前配置适用于所有构建。但这一次。在项目中添加了一些代码,但是这次构建失败并抛出了
java.lang.OutOfMemoryError: 超出 GC 开销限制
同时进行 FindBugs 分析。在搜索更多信息时,我发现 POM 文件的 FindBugs 配置中有一个 <effort> 选项。所以我尝试将它设置为<effort>min</effort>,之前是<effort>max</effort>。但这似乎也不起作用。更改 VM 参数也有限制,所以我不能这样做。
堆栈跟踪:
Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
[java] at java.util.BitSet.initWords(BitSet.java:166)
[java] at java.util.BitSet.<init>(BitSet.java:143)
[java] at edu.umd.cs.findbugs.ba.LiveLocalStoreAnalysis.createFact(LiveLocalStoreAnalysis.java:58)
[java] at edu.umd.cs.findbugs.ba.LiveLocalStoreAnalysis.createFact(LiveLocalStoreAnalysis.java:45)
[java] at edu.umd.cs.findbugs.ba.Dataflow.execute(Dataflow.java:318)
[java] at edu.umd.cs.findbugs.classfile.engine.bcel.LiveLocalStoreDataflowFactory.analyze(LiveLocalStoreDataflowFactory.java:68)
[java] at edu.umd.cs.findbugs.classfile.engine.bcel.LiveLocalStoreDataflowFactory.analyze(LiveLocalStoreDataflowFactory.java:38)
[java] at edu.umd.cs.findbugs.classfile.impl.AnalysisCache.analyzeMethod(AnalysisCache.java:369)
[java] at edu.umd.cs.findbugs.classfile.impl.AnalysisCache.getMethodAnalysis(AnalysisCache.java:
我无法确定我添加的新代码是否有问题,或者是 FindBugs 的问题。我的代码只是一个普通的东西(我相信)。即使我的代码有问题 FindBugs 也应该报告它,而不是让 JVM 本身崩溃。
我们使用带有默认 JVM 选项的 FindBugs 3.0.5
【问题讨论】:
-
jvm 使用的默认内存是多少?根据
faq,建议使用768m or more。 -
我的实例在 maven 的 findbugs 插件中是 512。
-
所以你正在使用低于要求的配置运行它。除了告诉您正确配置它之外,我认为我们无能为力。如果它是您的(本地?)IDE 配置,为什么要限制您更改 vm 参数(-Xmx)?
-
这不是我本地的。这是 docker 中的 PR 构建。
-
那是我的误解。无论如何,我认为您唯一的选择是与负责构建系统的人员交谈。您可以在本地运行构建过程以确定它需要多少内存。
标签: java maven garbage-collection out-of-memory findbugs