Impostazione dello spazio heap Java sotto Maven 2 su Windows

Ricevo questo messaggio durante la creazione del mio progetto

java.lang.OutOfMemoryError: spazio heap Java

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:

  1. Fare clic con il tasto destro del mouse su Risorse del computer e selezionare Proprietà (scorciatoia da tastiera premere Windows + Pausa / Pausa )
  2. Fare clic sul collegamento Impostazioni di sistema avanzate situato nella barra di navigazione a sinistra delle Proprietà del sistema per visualizzare Proprietà avanzate del sistema
  3. Vai alla scheda Avanzate e fai clic sul pulsante Variabili d’ambiente nella parte inferiore della finestra di configurazione delle Proprietà avanzate del sistema
  4. Crea una nuova variabile utente, imposta il nome della variabile su MAVEN_OPTS e imposta il valore Variabile su -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

  • imposta MAVEN_OPTS = -Xmx512m gli darebbe 512 Mb di heap
  • imposta MAVEN_OPTS = -Xmx2048m gli darebbe 2 GB di heap

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 :

  • -Xmx dimensione massima dell’heap
  • -Xms iniziando la dimensione dell’heap

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.