当项目包含许多链接时Eclipse变慢(原因:构建路径中的网络共享不好)

时间:2011-06-07 08:03:40

标签: eclipse performance

我们的一个应用程序中包含一个包含所有代码的eclipse项目。我认为这是一个相当数量的代码 - 不是一个小项目,但也不是一个巨大的项目。我对它进行了一次小检查并得到了:

  

发现< 4245>代码文件
  总计< 421557>代码行

此检查包含非空或只包含{}的所有代码行。

所以它不是一个庞大的项目 - 但是,.project定义了很多链接来掩盖真实的目录结构,为Package Explorer创建一个不同的视图 - 所以项目会更有意义。< / p>

问题是eclipse在某些方面工作得很慢 例子:

  • 在工作区中查找引用( Ctrl + Shift + G ) - 与之前在此工作的项目相比需要很长时间大小
  • 通过jadclipseJDEclipse进行反编译可能需要1分钟 - 导致eclipse在标题上显示可爱的(无响应)后缀 - 酒吧。从eclipse外部反编译的相同代码只需不到一秒钟。
  • JUnit测试执行 - 执行启动需要10秒以上,其中eclipse似乎没有做任何重要事情。

为什么会出现这种情况以及是否可能是“复杂”项目结构的结果?

使用eclipse 3.6,但未安装多个插件。

修改

使用resmon最终向我展示了问题。我注意到eclipse一直试图连接到网络共享 - 它没有占用太多的CPU或IO,但它仍然存在。 在检查.classpath文件时,我注意到了这一点:

<classpathentry kind="lib" path="build_class" sourcepath="some share using samba ..."> 

我们引用的份额甚至不是正确的路径,但这可能会导致每项活动产生大量开销。

删除sourcepath附件并将其保留为:

<classpathentry kind="lib" path="build_class"> 

立即解决问题。由于我们以任何方式使用反编译器插件,因此我们没有受到此更改的伤害。

1 个答案:

答案 0 :(得分:0)

这是典型的一个或多个资源瓶颈的情况。

您需要使用操作系统工具调查Eclipse正在等待的内容(任务管理器和perfmon非常适合Windows),如果这无助于在Oracle 6 JDK中使用jvisualvm调查Eclipse本身。

您很可能会发现系统正在等待底层硬盘。这有几个原因,一些是:

  • Eclipse是一个很棒的程序。操作系统可能需要将其中的一部分交换到磁盘。对于Eclipse来说,这会破坏性能真的!
  • Eclipse需要批次的磁盘访问权限。如果你有一个缓慢的磁盘或(恐怖的恐怖)一个过于激进的反病毒程序,这也会破坏性能。如果操作系统有足够的备用RAM,它可以将文件缓存在内存中,从而提供更好的性能。

如果是这种情况,请获取更多内存。

如果底层系统没问题,但Eclipse本身很慢(但其他Java程序运行正常),那么请查看jvisualvm内存使用情况随时间的变化情况,以及当你有多个频繁的垃圾收集时需要等待,您可能需要为JVM分配更多内存。这是在eclipse.ini文件中完成的。