运行大量测试会导致Eclipse冻结、继续冻结等

运行大量测试会导致Eclipse冻结、继续冻结等,eclipse,junit,junit3,Eclipse,Junit,Junit3,我注意到,执行大型JUnit3.x测试套件会导致Eclipse崩溃和锁定。即使我分配了很多堆和perm gen(1200m和400m),它也会嗡嗡作响,然后冻结,然后继续,需要相当长的时间。如果我以小批量运行测试,那么事情会相当快,冻结几乎不会发生 我已经检查了测试运行时的内存使用情况,对于给定的max heap或perm,它们都没有接近最大值的地方,所以这些应该不是问题 有没有人知道如何避开这个问题。不允许发表评论,因此请将其添加到此处。。您已检查内存,因此该选项已关闭 其他几件事可以尝试:

我注意到,执行大型JUnit3.x测试套件会导致Eclipse崩溃和锁定。即使我分配了很多堆和perm gen(1200m和400m),它也会嗡嗡作响,然后冻结,然后继续,需要相当长的时间。如果我以小批量运行测试,那么事情会相当快,冻结几乎不会发生

我已经检查了测试运行时的内存使用情况,对于给定的max heap或perm,它们都没有接近最大值的地方,所以这些应该不是问题


有没有人知道如何避开这个问题。

不允许发表评论,因此请将其添加到此处。。您已检查内存,因此该选项已关闭

其他几件事可以尝试:

我不确定,如果您尝试在junit上使用fork选项

是一次又一次地重建目标类吗?你能监视目标文件夹吗


您是否尝试重新创建工作区?只是建议这样做,因为您似乎已经涵盖了主要问题—内存、日志等。

这可能已经是您尝试过的东西,但。。。如果您将单元测试作为“JUnit插件测试”运行。。。那么您在eclispe.ini中对Xmx和MaxPermSize的设置是无用的

ini设置允许您更改当前eclipse的设置。从此Eclipse生成的任何Eclipse实例仍将具有默认设置(类似于Xms40m和Xmx512m)。你也必须改变这些

打开用于测试的启动配置(“运行>运行配置…”),选择用于启动单元测试的配置,然后转到“参数”选项卡。在“VM Arguments”文本区域中,输入新的内存设置,就像在eclipse.ini文件中一样(对于最昂贵的测试套件,我使用
-Xms256m-Xmx1536m-XX:MaxPermSize=256m
,但您可能需要更多)


不过,主要的问题可能是尝试修复单元测试中潜在的内存泄漏。您确定没有更多的卸载/内存释放/。。。在
拆卸()中
?在评测下运行测试可能会有所帮助(我们在我工作的地方使用Yourkit java profiler…但它不是免费的。JConsole可能会在这方面对您有所帮助,另请参见)。

您的程序中可能存在某种内存泄漏,只有在运行所有测试时才会出现。您没有提到如果在外部运行测试,是否会遇到相同的问题


我建议在冻结期间运行某种内存分析器。像MAT这样的东西在过去帮助过我。您还可以尝试运行多个jstack会话,了解随着时间的推移会发生什么。

您是否首先尝试了这个
eclipse.ini
?是的,我已经说明了导致堆和perm gen不足的明显原因的值。它们足够大…@mP:但是我提到的
eclipse.ini
不仅仅是堆和perm gen的大小。正是这些选项的精确组合使Eclipse在我们的工作站上顺利运行。测试用例是否向控制台视图写入了大量日志消息?您可能希望将日志记录减少为仅显示故障,然后仅重新运行失败的测试,并提高日志记录级别,以查看详细的调试日志。Eclipse并没有冻结,因为控制台上有几十条文本。重新创建工作区-是的。我宁愿避免通过ant运行junit,也不要使用fork,因为fork会让事情变得更慢,同时可能会避免冻结。它们不是作为插件测试运行的,是的,q中提到的设置是用于junit测试启动器本身的VM设置。然后我所能想到的就是内存泄漏我只能建议您分析单元测试,看看哪些对象占用了您的全部内存,或者在调试模式下启动它,并在一段时间后“暂停”整个过程,以尝试确定是否在某个地方发生了死锁。