当前位置:  开发笔记 > 编程语言 > 正文

为什么堆空间仅在运行JUnit测试时耗尽?

如何解决《为什么堆空间仅在运行JUnit测试时耗尽?》经验,为你挑选了3个好方法。

运行JUnit测试时,我似乎总是遇到这个错误:

eclipse outOfMemoryError:堆空间

我用JConsole监视Eclipse,堆内存峰值大约为150MB.我已将堆内存设置为1GB.

我在启动Eclipse时使用以下参数:

-vm "C:\Program Files\Java\jre1.5.0_08\bin\javaw.exe" -vmargs -Xmx1024M
-XX:MaxPermSize=128M -Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false

有谁知道可能导致这个问题的原因?它只在运行JUnit测试时发生.



1> Thijs Wouter..:

Junit测试在Eclipse IDE中以不同的vm运行.所以vm是内存不足而不是Eclipse内存.
您可以在测试的运行配置中更改测试vm的设置.
您转到运行配置,然后在参数下,您可以设置vm参数.



2> Nigel_V_Thom..:

继@Thijs Wouters回复,为了解决eclipse中的这个问题,我做了以下几点:

在JUnit下添加了新的运行配置(运行>运行配置> JUnit>新建)

在参数选项卡中,如果需要,将VM参数设置为"-Xms64m -Xmx256m"或更高



3> Michael Borg..:

您的JUnit测试中可能存在内存泄漏.一个常见的问题是:Junit将为其中的每个测试方法创建一个TestCase类的新实例.所有实例变量将保持不变直到JUnit终止.这意味着:如果你有一个带有50个测试方法的TestCase类和一个在setUp()方法中用1MB对象图初始化的实例变量,那么该TestCase类将需要50MB的堆空间.

编辑:上面描述的问题仅存在于旧版本的JUnit中,我认为它已在JUnit 4中修复.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有