[英]java.lang.OutOfMemoryError: PermGen with Jenkins and Maven
I get the following exception in my Jenkins job:- 我的Jenkins工作中出现以下异常: -
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 org.powermock.core.classloader.MockClassLoader.loadUnmockedClass(MockClassLoader.java:201)
at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:149)
at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:86)
at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:64)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
...... ......
I run my Junit test cases in this job through Maven. 我通过Maven在这个工作中运行我的Junit测试用例。 As suggested by Jenkins I have a new global property
MAVEN_OPTS
with a value as high as -XX:MaxPermSize=1024m
. 正如Jenkins所建议的,我有一个新的全局属性
MAVEN_OPTS
,其值高达-XX:MaxPermSize=1024m
。
But still I continue to get the java.lang.OutOfMemoryError: PermGen
. 但我仍然继续得到
java.lang.OutOfMemoryError: PermGen
。
Any assistance is greatly appreciated. 非常感谢任何帮助。
Thanks Stefan for your answer. 谢谢Stefan的回答。 Unfortunately adding the default log4j classloader did not solve my issue.
不幸的是,添加默认的log4j类加载器并没有解决我的问题。 However the link provided by you solved the issue.
但是,您提供的链接解决了该问题。
I had to add the following configuration in my "maven-surefire-plugin" definition:- 我必须在我的“maven-surefire-plugin”定义中添加以下配置: -
<argLine>-XX:PermSize=512m -XX:MaxPermSize=1024m</argLine>
This has fixed my problem. 这解决了我的问题。
PowerMock has a memory leak caused by class loading stuff: https://code.google.com/p/powermock/issues/detail?id=346 PowerMock因类加载内容而导致内存泄漏: https : //code.google.com/p/powermock/issues/detail? id = 346
You can use the default classloader for the log4j classes: 您可以使用log4j类的默认类加载器:
@RunWith(PowerMockRunner.class)
@PowerMockIgnore(value = {"org.apache.log4j.*"})
public class YourTest {
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.