java.lang.OutOfMemoryError: GC overhead limit exceeded while running findbugs in maven
java.lang.OutOfMemoryError: GC overhead limit exceeded while running findbugs in maven
所以基本上当前配置适用于所有构建。但是这次。向项目添加了一些代码,但是这次构建失败并抛出
java.lang.OutOfMemoryError: GC overhead limit exceeded
同时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
实际上,经过大量的努力和研究,在 maven 的 findbugs 帮助文档中找到了一个选项,可以在问题的第一条评论中指定分叉 jvm 的堆大小,如@second 所示。所以在 POM XML 里面,在 findbug 的标签里面,我可以像下面这样指定 1024:
<plugin>
<groupId>com.github.findbugs</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.1.12</version>
<configuration>
...
<maxHeap>1024</maxHeap>
...
</configuration>
...
</plugin>
差点忘了post回来。把它留在这里是希望能帮助像我这样的人。感谢@second 指出了正确的方向。
所以基本上当前配置适用于所有构建。但是这次。向项目添加了一些代码,但是这次构建失败并抛出
java.lang.OutOfMemoryError: GC overhead limit exceeded
同时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
实际上,经过大量的努力和研究,在 maven 的 findbugs 帮助文档中找到了一个选项,可以在问题的第一条评论中指定分叉 jvm 的堆大小,如@second 所示。所以在 POM XML 里面,在 findbug 的标签里面,我可以像下面这样指定 1024:
<plugin>
<groupId>com.github.findbugs</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.1.12</version>
<configuration>
...
<maxHeap>1024</maxHeap>
...
</configuration>
...
</plugin>
差点忘了post回来。把它留在这里是希望能帮助像我这样的人。感谢@second 指出了正确的方向。