【问题标题】:Jenkins with Java Heap Space Exception when executing JUnit-Tests执行 JUnit-Tests 时出现 Java 堆空间异常的 Jenkins
【发布时间】:2016-02-03 18:53:33
【问题描述】:

我有一个 Jenkins 正在运行,它将构建一个 Java 项目,我知道其中一些单元测试非常贪婪。

我认为我的 Jenkins 内存分配仍然有问题,我的一些作业因 OOM 异常而失败,更具体地说是 Java 堆空间。

我通过编辑 /etc/default/jenkins 文件给了 Jenkins 本身 2GB。为了确保 JUnit-Tests 也有足够的 RAM,我通过 Jenkins GUI 将值分配为 Global MAVEN_OPTS -Dmaven.surefire.heap=12g

这应该足以运行所有测试。但是构建仍然失败。我是詹金斯的新手,所以我会很感激一个指针,这里可能是什么问题。

【问题讨论】:

  • 你知道测试是否都在同一个JVM中运行,还是每个测试都启动一个新的JVM?
  • 我不知道。我怎么看?
  • 你是否在surefire插件中设置了reuseForks属性?

标签: java jenkins junit


【解决方案1】:

减少运行测试的堆影响的一种方法是在单独的 JVM 中运行所有 jUnit 测试。这确实需要权衡速度,但是,这意味着每个单独的测试class需要更长的时间。每个方法的时间将保持不变,只是为每个测试类设置额外的时间。

您可以在 maven surefire 插件中更改此设置,将这些行添加到您的 pom 中的设置中:

<configuration>
    <forkCount>1</forkCount>
    <reuseForks>false</reuseForks>
</configuration>

有关此主题的更多信息,请访问maven page for forking and parallel test execution

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 2019-07-22
    • 2013-06-25
    • 1970-01-01
    • 2019-03-11
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多