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 指出了正确的方向。