【发布时间】:2012-10-21 02:44:42
【问题描述】:
我正在 Jenkins 构建服务器上构建一个 Maven Java 应用程序。在 Jenkins 上构建期间,我多次遇到java.lang.OutOfMemoryError: PermGen space(但从未在我的本地主机上),因此它使我的构建失败。
我已经尝试为 Jenkins 设置MAVEN_OPTS:我进入了Jenkins-->Manage Jenkins-->Configure system-->Global MAVEN_OPTS,它被设置为-Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:PermSize=512m。尽管将其设置为如此高的值,但我们仍会遇到 PermGen 空间问题。我不想将 MAVEN_OPTS 设置为更高的值;我看不出我的应用程序需要多少空间,我宁愿深入研究高内存使用问题。
最近,我一直在想,permgen 空间问题可能不是来自 Maven 本身,而是来自 Maven 衍生的 JVM 进程之一(例如:插件)。我提出这个假设是因为 Maven 仍然能够正常执行 TestNG 测试,尽管已经吐出了我们的 permgen 空间错误行。 Jetty:
是导致 PermGen 错误的此类插件之一Oct 31, 2012 7:55:37 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: handle failed
java.lang.OutOfMemoryError: PermGen space
因此,我想知道:
MAVEN_OPTS 变量是否也适用于 Maven 构建衍生的子 JVM 进程?如果没有,那我该如何为这些子进程比如Jetty设置JVM选项呢?
注意:我使用的是 Maven 3.0.4。
【问题讨论】:
标签: java maven jenkins maven-jetty-plugin permgen