在SonarQube中运行单元测试时出现内存错误 - 分叉的虚拟机终止而没有说再见

时间:2014-06-24 23:59:41

标签: java maven out-of-memory sonarqube maven-surefire-plugin

运行声纳分析时,我们始终遇到内存错误。它是跨机器的间歇性的,但似乎一旦你得到它,它就会持续存在。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test   (default-cli) on project optimus-client-web-configuration: Execution default-cli of goal org.apache.maven.plugins:    

maven-surefire-plugin:2.16:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command wascmd.exe /X /C ""C:\Program Files\Java\jdk1.7.0_45\jre\bin\java" -javaagent:C:\Users\cxxx\AppData\Local\Temp\jacocoagent8301608889470684052.jar=destfile=target/jacoco.exec,excludes=
*_javassist_* -jar C:\redesign_Trunk\optimus-lms-server\optimus-client-web-configuration\target\surefire\surefirebooter2312966376869893038.jar C:\redesign_Trunk\optimus-lms-server\optimus-client-web-con
figuration\target\surefire\surefire350975689095180011tmp C:\redesign_Trunk\xxx-xx-server\xxx\target\surefire\surefire_45613339175612175619tmp"

在声纳阶段之前运行时,单元测试不会失败。它发生在一个特定的测试上,它激活Spring配置以测试它是否正常工作。可能这个测试比大多数消耗更多的内存,因为它必须加载整个上下文。

我在MAVEN_OPTS中增加内存以使用1024M最大堆。将此配置添加到我的pom

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <argLine>-Xmx1024m</argLine>
                </configuration>
</plugin>

2 个答案:

答案 0 :(得分:1)

在这个配置中,你只是配置surefire插件在它生成新的jvm时使用这个内存,你需要为mvn的jvm增加内存

export MAVEN_OPTS="-Xmx2048m"

尝试上面(适当的内存大小)

答案 1 :(得分:0)

另一种解决方案:以管理员身份运行应用程序[Eclipse IDE,SonarQube ...]

问题:
1.当错误日志包含:&#39; ... VM终止时没有正确告别...&#39;
2.错误日志包含:&#34; cmd.exe / C ...错误的内容......&#34;
3.错误日志包含:&#39; ... java.io.tmpdir ... c:\ windows &#39;