Я создаю приложение 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 на более высокое значение; Я не вижу, как мое приложение может потребовать свободного пространства, и я предпочел бы углубиться в проблему с высокой памятью.
В последнее время я думал, что, возможно, проблема с пространством в пермёне НЕ исходит от самого Maven, а скорее из одного из процессов JVM, которые Maven вращается (например: плагины). Я предлагаю эту гипотезу, потому что Maven все еще в состоянии выполнить тесты TestNG в порядке, несмотря на то, что уже плевали наши строки ошибок пространства пермг. Один такой плагин, который вызывает ошибку 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
также применительно к дочерним JVM-процессам, которые отключают Maven? Если нет, то как установить параметры JVM для этих дочерних процессов, таких как Jetty?
ПРИМЕЧАНИЕ. Я использую Maven 3.0.4.