2014-07-09 4 views
10

Ich habe versucht, auf Mac ein Ready Maven-Projekt, das unter Linux funktioniert. Wenn mvn clean install Aufruf läuft er einen Teil der Tests und dann bekomme ich folgende Fehlermeldung:osx maven läuft Tests Ausnahme: java.lang.OutOfMemoryError geworfen von der UncaughtExceptionHandler in Thread "Haupt"

Exception in thread "main" Ausnahme: java.lang.OutOfMemoryError vom UncaughtExceptionHandler in Thread geworfen "main"

Ich habe viele Fragen über Perm gen Fehler beim Hinzufügen von MAVEN_OPTS zu Umgebungsvariablen festgestellt. Im Moment habe ich die folgende Umgebungsvariable auf meinem System:

MAVEN_OPTS = "- Xmx4096m -XX: MaxPermSize = 4096m"

Wenn mvn help:system Aufruf Ich kann diese Optionen sehen in der Konfiguration zeigt nach oben.

Das Projekt verwendet Robolectric für Testzwecke und (die meisten der Zeit aber nicht immer) druckt die folgenden Zeilen vor die Ausnahme werfen:

[DEBUG] ************ ********* ** GC'ed SdkEnvironment wiederverwendet!

[ERROR] in [email protected]

In Aktivitätsmonitor nicht geladen org.robolectric.internal.ParallelUniverse konnte ich ein Java-Prozess zum Leben sehen kann, wenn ich anfangen Die Tests. Die Speicherauslastung erreicht 1,4 ~ 1,5 GB, bevor die Ausnahme ausgelöst wird.

Was sollte ich noch tun, damit es funktioniert? Danke für Ihre Hilfe!

EDIT , nachdem die Speicheroptionen sicherer Plugin fügte hinzu:

  <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> 

und mvn clean install -e -X Laufen bekam ich folgenden 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] 

, die mit 2 GB für absolut sicheren Speicher ist und 4 GB für Maven.

Antwort

23

fixiert ich dieses Problem durch eine andere magische Umgebungsvariable Zugabe bekam

JAVA_TOOL_OPTIONS="-Xmx1024m -XX:MaxPermSize=512m -Xms512m"

+0

ich das gleiche Problem, aber nur, wenn die Maven Build durch Teamcity laufen. Also habe ich den TeamCity Maven Build Step Parameter 'JVM command line parameters' auf' -Xmx1024m -XX: MaxPermSize = 512m -Xms512m' gesetzt. Danke vielmals! –

Verwandte Themen