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