嗨:我的应用程序有10,000个Junit测试用例。上周,当我添加新代码时,我注意到有很多Java堆内存单元测试用例错误。 1)一种方法是重新检查我添加的代码。 2)我在单元测试用例期间连接JVM,然后获得堆转储。有人能给我提示如何做2)案例吗?
我使用windows,maven,J2SE。
基本上我知道我将给Java命令提供什么样的参数,但是我不会把这些参数放在pom xml中。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.2</version>
</plugin>
答案 0 :(得分:1)
您可以设置jvm属性-XX:-HeapDumpOnOutOfMemoryError(http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html)并将其设置为surefire(http:/ /maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#argLine)
或者,您可以使用jmap按需转储进程的内存
请参阅jps(用于获取pid)和jmap文档
http://docs.oracle.com/javase/6/docs/technotes/tools/share/jps.html
http://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html