2012-07-13 60 views
2

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

我MAVEN_OPTS包含以下内容:

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

然而,当我使用“MVN安装”命令行运行我的单元测试,我也不时出现的OutOfMemoryError得到任何这样的内存转储。

如何获得内存转储?

感谢

回答

4

的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> 
+0

我在哪里添加此插件?在我正在运行的测试项目的POM中? – DJ180 2012-07-13 21:29:29

+0

@DJoyce:是的,我更新了我的答案,以显示放置该代码段的确切上下文。 – 2012-07-13 21:48:08

+0

我已经试过,现在,尽管我观察到OutOfMemoryError,但在C:\ Temp中仍然没有条目。任何其他想法? – DJ180 2012-07-13 22:47:06