2

我很难为产生内存不足错误的单元测试创​​建内存转储。

我的 MAVEN_OPTS 包含以下内容:

-Xmx1024m -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:\Temp

但是,当我使用“mvn install”从命令行运行单元测试时,当 OutOfMemoryError 发生时,我没有得到任何这样的内存转储。

如何获得内存转储?

谢谢

4

1 回答 1

7

默认情况下, 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>
于 2012-07-13T21:20:54.007 回答