java - 在 SonarQube 中运行单元测试时出现内存错误—— fork VM 没有正确说再见就终止了

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

在运行 Sonar 分析时,我们一直遇到内存不足错误。它在机器之间是间歇性的,但似乎一旦你得到它,它就会持续存在。

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

在 Sonar 阶段之前运行时,单元测试不会因此而失败。它发生在一个特定的测试中,该测试激活 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>

最佳答案

在此配置中,您只是将 surefire 插件配置为在生成新的 jvm 时使用此内存,您还需要为 mvn 的 jvm 增加内存

export MAVEN_OPTS="-Xmx2048m"

尝试上面的方法(使用适当的内存大小)

关于java - 在 SonarQube 中运行单元测试时出现内存错误—— fork VM 没有正确说再见就终止了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24398197/

相关文章:

c# - 使用 CacheToDisk 时,PDF*.tmp 文件未被删除和内存不足异常

Java:上传文件并获取文件的字符串(内容)

java - 跟踪垃圾收集

java - Jersey REST 2.0 异步请求在底层容器中失败(Tomcat 7)

java - 调用 url 并使用 HttpGet 发送 JSONObject

android - 如何解决Android应用程序中的内存不足错误

android - 连线内存不足 : Java heap space error with ffmpeg library

java - xslt不支持注册商标符号

java.io.IOException : Stream closed 异常

maven - 使用 maven 为 Micronaut Swagger