【问题标题】:java.lang.OutOfMemoryError: GC overhead limit exceeded while running findbugs in mavenjava.lang.OutOfMemoryError:在 maven 中运行 findbugs 时超出了 GC 开销限制
【发布时间】: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


【解决方案1】:

实际上,经过大量的努力和研究,在 maven 的 maven findbugs 帮助文档中找到了一个选项,可以指定分叉 jvm 的堆大小,如问题的第一条评论中的 @second 所示。因此,在 findbug 标记内的 POM XML 中,我可以指定 1024,如下所示:

<plugin>
    <groupId>com.github.findbugs</groupId>
    <artifactId>findbugs-maven-plugin</artifactId>
    <version>3.1.12</version>
    <configuration>
       ...
      <maxHeap>1024</maxHeap>
       ...
    </configuration>
       ...       
  </plugin>

我差点忘了回帖。把它留在这里,希望能帮助像我这样的人。感谢@second 指出正确的方向。

【讨论】:

    猜你喜欢
    • 2016-08-07
    • 2017-12-27
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多