Ricevo questo messaggio durante la creazione del mio progetto
java.lang.OutOfMemoryError: spazio heap Java
- Qual è il modo migliore per evitare il barattolo di maven?
- Come posso creare un JAR eseguibile con dipendenze usando Maven?
- Cosa causa il progetto Maven importato in Eclipse per utilizzare Java 1.5 anziché Java 1.6 per impostazione predefinita e come posso garantire che non lo faccia?
- Qual è la differenza tra questi ambiti di dipendenza Maven: fornito / compile / system / import
- Come posso scaricare uno specifico artefatto Maven in una riga di comando?
Come faccio ad aumentare lo spazio nell’heap, ho 8Gb o RAM è imansible che il computer abbia consumato così tanto, ho trovato questo http://vikashazrati.wordpress.com/2007/07/26/quicktip-how-to-ingrrease-the -java-heap-memory-for-maven-2-on-linux / come farlo su linux, ma io sono su windows 7. Come posso cambiare lo spazio java heap sotto windows?
La variabile di ambiente da impostare è MAVEN_OPTS
, ad esempio MAVEN_OPTS=-Xmx1024m
. La configurazione maxmem
nel pom si applica solo quando si imposta il plugin del compilatore su fork javac
in una nuova JVM. Altrimenti il plugin viene eseguito all’interno della stessa VM di Maven e quindi all’interno della memoria passata sulla riga di comando tramite MAVEN_OPTS
.
Per impostare MAVEN_OPTS in Windows 7:
-Xmx1024m
(o più) Apri una nuova finestra di comando ed esegui mvn
.
Se si sta esaurendo lo spazio heap durante l’esecuzione del test JUnit infallibile (o non sicuro), la modifica di MAVEN_OPTS potrebbe non essere di aiuto. Ho continuato a provare diverse configurazioni in MAVEN_OPTS senza fortuna finché non ho trovato questo post che risolve il problema.
Fondamentalmente le JUnits si spostano nel loro ambiente e ignorano le impostazioni in MAVEN_OPTS. È necessario configurare surefire nel tuo pom per aggiungere più memoria per i JUnits.
Spero che questo possa salvare qualcun altro un po ‘di tempo!
Modifica: copia della soluzione dal blog di Keith Chapman nel caso in cui il collegamento si interrompa un giorno:
org.apache.maven.plugins maven-surefire-plugin pertest -Xms256m -Xmx512m false false **/*IntegrationTestSuite.java
Aggiornamento (31/05/2017): grazie a @johnstosh per averlo indicato – surefire si è evoluto un po ‘da quando ho inserito questa risposta. Ecco un link alla loro documentazione e un esempio di codice aggiornato (la linea arg è ancora la parte importante per questa domanda):
org.apache.maven.plugins maven-surefire-plugin 2.20 3 true -Xmx1024m -XX:MaxPermSize=256m MY_TEST_SCHEMA_${surefire.forkNumber} FORK_DIRECTORY_${surefire.forkNumber}
Dovrebbe essere lo stesso comando, tranne SET invece di EXPORT
Sul Mac: invece di JAVA_OPTS
e MAVEN_OPTS
, usa invece _JAVA_OPTIONS. Funziona!
Dopo aver provato a utilizzare la variabile MAVEN_OPTS senza fortuna, mi sono imbattuto in questo sito che ha funzionato per me. Quindi tutto ciò che dovevo fare era aggiungere -Xms128m -Xmx1024m alle opzioni VM predefinite e ha funzionato.
Per cambiare quelli in Eclipse, vai su Finestra -> Preferenze -> Java -> JRE installati. Seleziona il JRE / JDK verificato e fai clic su modifica.
Su Windows:
Aggiungi una variabile ambientale (in entrambe le variabili di sistema e dell’utente, ho qualche strano problema, che ottiene la variabile da vari punti, quindi li aggiungo in entrambi).
Chiamalo MAVEN_OPTS.
Il valore sarà: -Xms1024m -Xmx3000m -XX:MaxPermSize=1024m -XX:+CMSClassUnloadingEnabled
I numeri possono essere diversi, renderli relativi alla tua dimensione mem.
Ho avuto quel problema e questo l’ha risolto, nient’altro!
Ha funzionato – Per cambiare in Eclipse, vai su Finestra -> Preferenze -> Java -> JRE installati. Seleziona il JRE / JDK verificato e fai clic su modifica.
Argomenti VM predefiniti = -Xms128m -Xmx1024m
Stai cercando 2 opzioni per java
:
Mettili nella tua linea di comando invocazione dell’eseguibile java
, in questo modo:
java -Xms512M -Xmx1024M my.package.MainClass
Tenere presente che è ansible che le dimensioni iniziali e massime dell’heap siano le stesse, a seconda dell’applicazione, poiché evita il ridimensionamento dell’heap durante il runtime (che può richiedere tempo nelle applicazioni che devono essere reattive). Il ridimensionamento dell’heap può comportare lo spostamento di molti oggetti e la ripetizione della contabilità.
Per i progetti di tutti i giorni, trasformali in ciò che pensi sia abbastanza buono. Profilo per aiuto.