2009-12-17 3 views
31

Je compile un projet open source avec "mvn install" mais fini avec java.lang.OutOfMemoryError: Java heap space. J'ai essayé d'exécuter java -Xmx256m mais la sortie était synopsis java qui indiquait que c'était une commande invalide.Maven jette "java.lang.OutOfMemoryError"

J'utilise jdk1.5.0_08, des idées pourquoi cela se passe-t-il?

Merci,

+2

Il est question ouverte;) La réponse est peut-être MAVEN_OPTS = "- Xmx513m", etc;) – cetnar

Répondre

50

Définissez la variable d'environnement:

MAVEN_OPTS="-Xmx512m" 
+12

Parfois est bon aussi d'étendre perm taille de la mémoire - MAVEN_OPTS = "- Xmx512m -XX: MaxPermSize = 256m" – cetnar

+2

Réglage MAVEN_OPTS seul n'est pas suffisant si la construction échoue lors des tests unitaires. Dans ce cas, vous devrez peut-être configurer explicitement le "argLine" de maven-surefire-plugin. –

+1

Je recevais cette erreur sur mvn install, en utilisant "mvn install -DMAVEN_OPTS = -Xmx1024m" a résolu mon problème! – Surekha

18

Cela dépend de l'instance JVM nécessite plus de mémoire. A titre d'exemple, si les tests sont fourchues (par défaut), et échoue en raison OutOfMemoryError puis essayez de configurer le plugin qui les lancer:

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <argLine>-Xmx1024m</argLine> 
      </configuration> 
     </plugin> 
-5

J'ai connu le même problème. Selon this link, il peut être utile de changer l'implémentation de jvm - ceci peut être fait en définissant la variable système JAVA_HOME.

Essayez par exemple dans le lien mentionné ibm jvm ou Oracle JRockit:

SET JAVA_HOME=C:\bea10\jrockit160_22 
mvn install 
9

Non seulement la mémoire de tas. Vous devez augmenter la taille perm également pour résoudre cette exception dans le maven utiliser ces variables dans la variable d'environnement.

nom de la variable: MAVEN_OPTS
valeur variable: -Xmx512m -XX: MaxPermSize = 256m

+0

Comment pouvez-vous obtenir la valeur actuelle de 'Xmx' et' MaxPermSize'? Après tout, je ne peux pas augmenter les valeurs sans savoir ce qu'elles sont déjà définies. – ArtOfWarfare

+0

Je ne suis pas sûr de MaxPermSize, mais Xmx est généralement 1/4e de la mémoire physique. Encore une fois, cela peut varier en fonction des implémentations JRE et/ou du mode "serveur", "client" de la JVM. –

+0

-bash: export: '-XX: MaxPermSize = 256m ': identifiant non valide – user2568374

0

Vous pouvez également utiliser set MAVEN_OPTS="-XX:MaxPermSize=256m" lors de l'exécution de l'invite de commande.

-1

Essayez de modifier ou de mettre à jour votre installation Maven. J'ai eu ce problème mais je l'ai résolu en mettant à jour Maven (3.0.5 à 3.3.3).

3

Parfois, si vous utilisez d'autres programmes à l'intérieur de maven, comme dans les tests d'intration ou surefire, les MAVEN_OPTS ne suffisent pas. En dehors de MAVEN_OPTS, essayez d'utiliser JAVA_TOOL_OPTIONS. Cela a fait l'affaire pour moi dans Maven lors de l'exécution des tests d'intégration:

export JAVA_TOOL_OPTIONS="-Xmx2048m -XX:MaxPermSize=1024m -Xms2048m" 

Référence: osx maven running tests Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

0

Je l'utilise toujours avec ma coquille sur ubuntu:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m" 
Questions connexes