2011-02-01 30 views
4

我注意到,执行大主要的Junit 3.x的测试套件,使Eclipse来shititself和锁定。即使我分配了很多堆和烫发电池(1200米和400米),它也会嗡嗡作响,然后冻结然后继续,需要相当长的时间。如果我小批量地运行测试,那么事情就会相当迅速,冻结几乎不会发生。运行大量的测试,使Eclipse的冻结,冻结继续等

我已经检查了内存使用,同时运行的测试,他们是没有在附近最大为任何给定的最大堆或烫发,所以那些不应该是一个问题...

没有人有技巧如何解决这个问题。

+1

你是不是先试了这个`eclipse.ini`? http://stackoverflow.com/questions/142357/what-are-the-best-jvm-settings-for-eclipse/3275659#3275659 – VonC 2011-02-01 14:29:06

+0

是的,我已经说明了什么是显而易见的原因没有足够的堆和电烫发的值。它们足够大...... – 2011-02-04 21:52:04

+0

@mP:但我提到的`eclipse.ini`不仅仅是堆和烫发代码的大小。这些选项的确切组合使得Eclipse能够在我们的工作站上平稳运行。 – VonC 2011-02-15 04:55:56

回答

0

不允许发表评论,因此在这里添加它..你已经检查了内存,因此该选项是关闭的

一些其他的事情尝试:

我不知道,如果你试图用打junit上的fork选项。

难道一次又一次重建的目标类?你可以看目标文件夹吗?

你有没有尝试重新创建工作区?只是提出这个,因为你似乎已经覆盖了主要问题 - 内存,日志等。

3

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

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

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

虽然可能是尝试修复单元测试的潜在内存泄漏,但主要问题可能是。你确定你没有更多的卸载/内存释放/ ...在tearDown()?在配置文件下运行测试可能会有所帮助(我们使用Yourkit java profiler来完成工作,但这不是免费的,JConsole可能会帮助您,另请参阅http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html)。

0

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

我会建议运行一些内存分析器周围的冻结时间。像MAT http://www.eclipse.org/mat/这样的东西在过去帮助过我。你也可以尝试运行多个jstack会话来了解随着时间的推移发生的事情。