linux - Jenkins --> JUnit 在 Linux 上抛出 OutOfMemoryError PermGen

标签 linux ant junit jenkins

在构建期间,我在 Linux 上使用 Jenkins 运行了大约数千 (10K) 个 Junit,但它抛出了 OutOfMemoryError。

/builds/build.xml:113: java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
    at 

在 configure --> "invoke ant"--> advance 上为 JUnit 设置了以下 JVM 配置

Xms512m -Xmx1024m -XX:MaxPermSize=1024m

即使将 PermGen 和 HeapSize 增加到 3072m,它在同一测试中仍然失败。

我是不是在错误的地方进行了配置? Jenkins 是否限制我将调用 ant 配置增加到超过特定限制? Jenkins配置是否也需要增加才能影响JUnit ant配置?如果是,有人可以建议如何增加 Jenkins 堆和 PermGen 配置吗?

最佳答案

当是PermGen space错误时,使用Xms & Xmx参数不会影响错误。我建议您将这些选项添加到 Jenkins 启动脚本,而不是在 Build > Invoke Ant > Advanced... > Java Options 中设置选项。

-XX:PermSize=512m -XX:MaxPermSize=1024m

如果需要,尝试增加 MaxPermSize 值。

关于linux - Jenkins --> JUnit 在 Linux 上抛出 OutOfMemoryError PermGen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25568824/

相关文章:

java - 包是否需要放在 jar 中才能用于 ant 构建脚本

java - 如何用Ant编译构建C++项目?

java - 如何使用在docker中运行的mysql来运行maven测试(使用maven-surefire-plugin)

java - Ant:如何从 Java 执行 Ant

c - linux交叉编译的方法

linux - 从文本文件返回数字 - BASH

c - c中的linux TCP多客户端回显服务器

unit-testing - 从 grails 2.3 升级到 2.5 后单元测试无法运行

java - 坚持测试一种方法

linux - 使用 htaccess .. 所有 url 都必须使用 www 重定向到 https