RaI*_*qer 11 java macos android maven robolectric
我一直在尝试在mac上运行一个在linux下工作的maven项目.当mvn clean install
它调用
它运行一部分测试,然后我收到以下错误:
线程"main"中的异常异常:从线程"main"中的UncaughtExceptionHandler抛出java.lang.OutOfMemoryError
我已经看到许多关于Perm gen error的问题已经通过添加MAVEN_OPTS
到环境变量来修复.现在我的系统上有以下环境变量:
MAVEN_OPTS =" - Xmx4096m -XX:MaxPermSize = 4096m"
通话时mvn help:system
我可以看到配置中显示的这些选项.
该项目使用Robolectric进行测试,并且(在大多数情况下但并非总是如此)在抛出异常之前打印以下行:
[DEBUG]***********************GC'ed SdkEnvironment重复使用!
[ERROR]无法在org.robolectric.bytecode.AsmInstrumentingClassLoader@300abe53中加载org.robolectric.internal.ParallelUniverse
在活动监视器中,我可以看到一个java进程在我开始测试时生效.在抛出异常之前,它的内存使用量达到1.4~1.5GB.
我还应该做些什么才能让它发挥作用.谢谢你的帮助!
将内存选项添加到确定的fire插件后编辑:
Run Code Online (Sandbox Code Playgroud)<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]
Run Code Online (Sandbox Code Playgroud)
那就是2GB的内存用于万无一失,4GB用于maven.
归档时间: |
|
查看次数: |
15258 次 |
最近记录: |