Ho cercato di eseguire su Mac un progetto pronto per il maven che funziona sotto linux. Quando si chiama mvn clean install
corre una parte dei test e poi sto ottenendo il seguente errore:osav test di esecuzione Maven Eccezione: java.lang.OutOfMemoryError generato da UncaughtExceptionHandler nel thread "main"
Exception in thread Exception "principale": java.lang.OutOfMemoryError gettato dal UncaughtExceptionHandler in thread "main"
Ho visto molte domande sull'errore di gen Perm con l'aggiunta di MAVEN_OPTS
alle variabili ambientali. In questo momento ho la seguente variabile ambientale sul mio sistema:
MAVEN_OPTS = "- Xmx4096m XX: MaxPermSize = 4096m"
Quando si chiama mvn help:system
posso vedere queste opzioni che mostra nella configurazione.
Il progetto utilizza Robolectric a scopo di test e (la maggior parte delle volte, ma non sempre) la stampa dei seguenti righe prima di gettare l'eccezione:
[DEBUG] ************ ********* ** GC'ed SdkEnvironment riutilizzato!
[ERRORE] non poteva caricare org.robolectric.internal.ParallelUniverse in [email protected]
In monitorare l'attività posso vedere un processo Java prendono vita quando inizio i test. L'utilizzo della memoria raggiunge 1,4 ~ 1,5 GB prima che venga generata l'eccezione.
Che altro dovrei fare per farlo funzionare. Grazie per il tuo aiuto!
EDIT dopo aver aggiunto le opzioni di memoria per certi plug-incendio:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.16</version> <configuration> <argLine>-Xmx2048m -XX:MaxPermSize=2048m</argLine> </configuration> </plugin>
e funzionante mvn clean install -e -X
ho ottenuto il seguente stack trace:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project android: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test failed: There was an error in the forked process
[ERROR] java.lang.OutOfMemoryError: PermGen space
[ERROR] at java.lang.ClassLoader.defineClass1(Native Method)
[ERROR] at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
[ERROR] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[ERROR] at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
[ERROR] at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
[ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[ERROR] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[ERROR] at java.security.AccessController.doPrivileged(Native Method)
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
[ERROR] at org.apache.maven.surefire.report.SmartStackTraceParser.getMinimalThrowableMiniMessage(SmartStackTraceParser.java:166)
[ERROR] at org.apache.maven.surefire.report.SmartStackTraceParser.getString(SmartStackTraceParser.java:151)
[ERROR] at org.apache.maven.surefire.report.PojoStackTraceWriter.smartTrimmedStackTrace(PojoStackTraceWriter.java:61)
[ERROR] at org.apache.maven.surefire.booter.ForkingRunListener.encode(ForkingRunListener.java:328)
[ERROR] at org.apache.maven.surefire.booter.ForkingRunListener.encode(ForkingRunListener.java:312)
[ERROR] at org.apache.maven.surefire.booter.ForkingRunListener.toString(ForkingRunListener.java:258)
[ERROR] at org.apache.maven.surefire.booter.ForkingRunListener.testError(ForkingRunListener.java:132)
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:162)
[ERROR] at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:124)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:200)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:153)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:103)
[ERROR] -> [Help 1]
Ecco con 2GB di memoria per infallibile e 4 GB per Maven.
Ho avuto lo stesso problema, ma solo quando la costruzione Maven è gestito attraverso TeamCity. Così ho impostato il parametro TeamCity Maven Build Step 'Parametri della riga di comando JVM' su' -Xmx1024m -XX: MaxPermSize = 512m -Xms512m'. Molte grazie! –