osx maven запускает тесты Исключение: java.lang.OutOfMemoryError, выброшенный из UncaughtExceptionHandler в потоке main

Я пытался запустить на Mac готовый проект maven, который работает под Linux. При вызове mvn clean install он запускает часть тестов, а затем я получаю следующую ошибку:

Исключение в потоке "main" Исключение: ошибка java.lang.OutOfMemoryError, выданная из UncaughtExceptionHandler в потоке "main"

Я видел много вопросов об ошибке Perm gen, исправленной добавлением MAVEN_OPTS к переменным окружения. Прямо сейчас у меня есть следующая переменная окружения в моей системе:

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

При вызове mvn help:system я вижу, что эти параметры отображаются в конфигурации.

Проект использует Robolectric для целей тестирования и (в большинстве случаев, но не всегда) печатает следующие строки перед тем, как выдать исключение:

[DEBUG] ********************* **Повторное использование среды SdkEnvironment, созданной сборщиком мусора!

[ОШИБКА] не удалось загрузить org.robolectric.internal.ParallelUniverse в org.robolectric.bytecode.AsmInstrumentingClassLoader@300abe53

В мониторе активности я вижу, как Java-процесс оживает, когда я запускаю тесты. Его использование памяти достигает 1,4 ~ 1,5 ГБ, прежде чем будет выдано исключение.

Что еще я должен сделать, чтобы заставить его работать. Спасибо за вашу помощь!

ИЗМЕНИТЬ после добавления параметров памяти в плагин sure fire :

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

и запустив mvn clean install -e -X, я получил следующую трассировку стека:

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

Это с 2 ГБ памяти для уверенного огня и 4 ГБ для maven.


person RaINqer    schedule 09.07.2014    source источник


Ответы (1)


Я исправил эту проблему, добавив еще одну волшебную переменную окружения.

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

person RaINqer    schedule 10.07.2014
comment
У меня такая же проблема, но только когда сборка Maven запускается через TeamCity. Таким образом, я установил для параметра TeamCity Maven Build Step JVM command line parameters значение -Xmx1024m -XX:MaxPermSize=512m -Xms512m. Большое спасибо! - person Julien Kronegg; 12.04.2017