我正在 Jenkins 构建服务器上构建一个 Maven Java 应用程序。我java.lang.OutOfMemoryError: PermGen space
在 Jenkins 上构建期间遇到了很多次(但从来没有在我的本地主机上),因此它使我的构建失败。
我已经尝试过MAVEN_OPTS
为 Jenkins 设置:我进入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 空间错误行。导致 PermGen 错误的插件之一是Jetty:
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。