我很难为产生内存不足错误的单元测试创建内存转储。
我的 MAVEN_OPTS 包含以下内容:
-Xmx1024m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp
但是,当我使用“mvn install”从命令行运行单元测试时,当 OutOfMemoryError 发生时,我没有得到任何这样的内存转储。
如何获得内存转储?
谢谢
我很难为产生内存不足错误的单元测试创建内存转储。
我的 MAVEN_OPTS 包含以下内容:
-Xmx1024m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp
但是,当我使用“mvn install”从命令行运行单元测试时,当 OutOfMemoryError 发生时,我没有得到任何这样的内存转储。
如何获得内存转储?
谢谢
默认情况下, Maven(surefire-plugin
准确地说)会创建新的 JVM 来运行测试。MAVEN_OPTS
变量由运行 maven 的 JVM 本身使用,但不用于分叉测试 JVM。要更改该 JVM 的设置,请使用以下代码片段:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<!-- ... -->
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>-Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp</argLine>
</configuration>
</plugin>
<!-- ... -->
</plugins>
</build>
</project>