Définir la taille permgen pour les processus JVM enfants que Maven va essorer
Je suis la construction d'une Maven application Java sur un serveur de build Jenkins. Je suis en cours d'exécution dans java.lang.OutOfMemoryError: PermGen space
de nombreuses reprises lors de la build Jenkins (mais jamais sur mon localhost) et donc il ne parvient pas mon construire.
J'ai déjà essayé de réglage MAVEN_OPTS
pour Jenkins: je suis allé dans Jenkins
-->Manage Jenkins
-->Configure system
-->Global MAVEN_OPTS
et il a été mis à -Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:PermSize=512m
. Malgré la mise à cette valeur élevée, nous continuer à courir dans le PermGen space questions. Je ne veux pas définir la MAVEN_OPTS à une valeur plus élevée; je ne vois pas comment mon application peut nécessiter un concert de l'espace, et je préfère creuser profondément dans les hauts-de mémoire-de l'utilisation de problème.
Dernièrement, j'ai pensé que peut-être la permgen space problème ne vient PAS de Maven lui-même, mais plutôt de la JVM des processus qui Maven arrêt de la rotation (ex: les plugins). Je propose cette hypothèse parce que Maven est encore en mesure d'exécuter TestNG tests bien, malgré déjà cracher notre la permgen space erreur de lignes. Un tel plugin qui est à l'origine de la PermGen erreur est Jetty:
Oct 31, 2012 7:55:37 AM com.google.apphosting.utils.jetty.JettyLogger warn
WARNING: handle failed
java.lang.OutOfMemoryError: PermGen space
Donc, je voudrais savoir:
Ne le MAVEN_OPTS
variable s'appliquent également à l'enfant de la JVM des processus qu'un Maven build arrêt de la rotation? Si non, alors comment puis-je configurer les options de la JVM pour ces enfants des processus tels que la Jetée?
NOTE: j'utilise Maven 3.0.4.
source d'informationauteur ecbrodie
Vous devez vous connecter pour publier un commentaire.
La plupart des plugins Maven qui engendrent les processus Java ont leur propre façon de spécification de la JVM arguments de ligne de commande. Par exemple, vous pouvez configurer des tas et permgen tailles dans les processus générés par le plugin Surefire à l'aide de la
argLine
paramètre de configuration (voir http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#argLine).La Jetée plugin ne fraie pas les processus, afin de tas et permgen sont régies par la JVM arguments fournis à la Maven processus.
Si vous êtes à court de mémoire lors de l'exécution de Jenkins, mais pas lors de l'exécution en local, cochez la MAVEN_OPTS que Jenkins passe à Maven.
Vous pouvez configurer la vm options à l'échelle mondiale (paramètres) et de la remplacer pour n'importe quel travail. E. g. dans Maven en fonction des emplois, la MAVEN_OPTS champ est caché dans l'un des "avancées" blocs.
Comme mentionné précédemment par une autre réponse que chaque processus a sa propre manière de spécifier des arguments. En cas de maven sous processus engendré par Jenkins, le paramètre sera dans la configuration de travail en vertu de l'maven build. Vous devez cliquez sur "Avancé", bouton et définissez l'option dans
MAVEN_OPTS
champ. par exemple :-XX:MaxPermSize=256m -Xms512m -Xmx1024m