在构建期间,我在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
在配置-->"invoke ant"-->高级时,为该作业的JUnit设置以下JVM配置
Xms512m -Xmx1024m -XX:MaxPermSize=1024m
即使在将PermGen和HeapSize增加到3072m之后,它在同一测试中也失败了。
我在错误的地方配置吗?Jenkins是否限制我将invokeant配置增加到一定的限制之外?Jenkins配置是否也需要增加以影响JUnit ant配置?如果是,有人能建议如何增加Jenkins堆和PermGen配置吗?
当它是PermGen space
错误时,使用Xms
&Xmx
参数不会影响错误。我建议您将这些选项添加到Jenkins启动脚本中,而不是在Build > Invoke Ant > Advanced... > Java Options
中设置这些选项。
-XX:PermSize=512m -XX:MaxPermSize=1024m
如果需要,请尝试增加MaxPermSize
值。