运行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测试时发生.
Junit测试在Eclipse IDE中以不同的vm运行.所以vm是内存不足而不是Eclipse内存.
您可以在测试的运行配置中更改测试vm的设置.
您转到运行配置,然后在参数下,您可以设置vm参数.
继@Thijs Wouters回复,为了解决eclipse中的这个问题,我做了以下几点:
在JUnit下添加了新的运行配置(运行>运行配置> JUnit>新建)
在参数选项卡中,如果需要,将VM参数设置为"-Xms64m -Xmx256m"或更高
您的JUnit测试中可能存在内存泄漏.一个常见的问题是:Junit将为其中的每个测试方法创建一个TestCase类的新实例.所有实例变量将保持不变直到JUnit终止.这意味着:如果你有一个带有50个测试方法的TestCase类和一个在setUp()方法中用1MB对象图初始化的实例变量,那么该TestCase类将需要50MB的堆空间.
编辑:上面描述的问题仅存在于旧版本的JUnit中,我认为它已在JUnit 4中修复.