2009-12-17 17 views
31

Sto compilando un progetto open source con "mvn install" ma ho finito con java.lang.OutOfMemoryError: Java heap space. Ho provato ad eseguire java -Xmx256m ma l'output era sinossi java che indicava che si trattava di un comando non valido.Maven genera "java.lang.OutOfMemoryError"

Sto usando jdk1.5.0_08, qualche idea del perché questo sta accadendo?

Grazie,

+2

E 'aperto domanda;) La risposta potrebbe essere MAVEN_OPTS = "- Xmx513m", ecc;) – cetnar

risposta

50

Impostare la variabile d'ambiente:

MAVEN_OPTS="-Xmx512m" 
+12

A volte è un bene anche per estendere la dimensione della memoria permanente - MAVEN_OPTS = "- Xmx512m XX: MaxPermSize = 256m" – cetnar

+2

MAVEN_OPTS Impostazione da solo non è sufficiente se la compilazione fallisce durante l'esecuzione dei test unitari. In questi casi, potrebbe essere necessario configurare esplicitamente "argLine" di maven-surefire-plugin. –

+1

Stavo ricevendo questo errore su mvn install, usando "mvn install -DMAVEN_OPTS = -Xmx1024m" ho risolto il mio problema! – Surekha

18

Dipende da quale istanza JVM richiedono più memoria. Come esempio, se i test sono a forcella (per impostazione predefinita), e non riesce a causa OutOfMemoryError quindi provare configurare plugin che lanciarli:

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

ho sperimentato lo stesso problema. Secondo this link, potrebbe essere utile cambiare l'implementazione di jvm: ciò può essere fatto impostando la variabile di sistema JAVA_HOME.

Prova ad esempio nel link citato JVM IBM o Oracle JRockit:

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

Non solo memoria heap. È necessario aumentare la dimensione perm anche per risolvere tale eccezione in Maven utilizzare queste variabili nella variabile di ambiente.

nome variabile: MAVEN_OPTS
valore variabile: -Xmx512m XX: MaxPermSize = 256m

+0

Come si può ottenere il valore corrente di 'Xmx' e' MaxPermSize'? Dopotutto, non posso aumentare i valori senza sapere a cosa sono già impostati. – ArtOfWarfare

+0

Non sono sicuro di MaxPermSize, ma Xmx è in genere 1/4 della memoria fisica. Anche in questo caso, ciò può variare in base alle implementazioni JRE e/o alla modalità "client", "client" di JVM. –

+0

-bash: export: '-XX: MaxPermSize = 256m ': non è un identificatore valido – user2568374

0

alternativa utilizzare set MAVEN_OPTS="-XX:MaxPermSize=256m" durante l'esecuzione dal richiamo di ordine.

-1

Provare a modificare o aggiornare l'installazione di Maven. Ho avuto questo problema ma l'ho risolto aggiornando Maven (dalla 3.0.5 alla 3.3.3).

3

A volte, se si utilizzano altri programmi all'interno di Maven, come nei test di intration o surefire, i MAVEN_OPTS non sono sufficienti. Oltre a MAVEN_OPTS, prova ad utilizzare JAVA_TOOL_OPTIONS. Questo ha fatto il trucco per me in Maven durante l'esecuzione di alcuni test di integrazione:

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

Riferimento: osx maven running tests Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "main"

0

Io uso sempre questo con il mio guscio su Ubuntu:

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=500m" 
Problemi correlati