如何确定是什么导致Eclipse变慢?

12

我们有一个相当庞大的代码库(150多个项目、40万行Java代码、一些Groovy和Gradle代码、一些Perl代码、一些XML、许多JSP文件等)。我成功地在Spring Tools Studio 2.6中打开了所有这些项目,同时还添加了一些用于Groovy、Perl、Checkstyle和PMD的插件。

问题是Eclipse一直占用我的CPU,而且当我更新某些内容时,它非常缓慢,构建速度也很慢,任何类型的UI操作都会有延迟。

此外,我的计算机配置相当不错,64位,8GB内存,运行64位版本的STS,给Eclipse分配了2GB内存(但堆大小始终不超过1GB)。

所以,我的第一个问题是如何确定是什么导致它变慢了?你们中有一些人成功地在单个工作区中处理如此庞大的代码库吗?

我尝试查看运行Eclipse的JVM的线程(使用jconsole),但我在那里找不到任何有趣的东西。


参见:https://dev59.com/FmvXa4cB1Zd3GeqPGjGv - Aaron Digulla
3个回答

8
我会提出一些建议-这些建议按照易用性的顺序排列。如果您决心找出是哪个插件导致了问题,并加入该项目进行修复,或向支持列表发送仇恨邮件,那么您可能需要跳到下面的“Profile It”部分。
检查控制台
如果您从命令行启动eclipse(即键入eclipse),则如果有任何异常被抛出,您将在此处看到它们。有时候缓慢可能是由插件反复失败并抛出大量异常引起的。有时它是您可以修复的东西-有时您必须删除该插件。
增加RAM
我们喜欢GC,但它会导致缓慢死亡。 GC的美妙之处在于您的程序永远不会耗尽内存-因为用户认为它已经锁定并在实际耗尽内存之前将其杀死。因此,请尝试增加PermGen和其他Eclipse内存设置:http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F 创建新工作区
我经常会放弃并删除/重新创建整个工作空间。 有很多插件,调试可能是一个真正的挑战,而且工作空间目录中的垃圾经常导致出现故障。
保持 Eclipse 精简
如果我想让 Eclipse 非常快速,我会为单个项目创建一个安装包,并仅添加所需的插件。 如果您可以从非 EE 版本开始,则已经大大减少了膨胀。
进行分析
Sun JDK 中包含的 VisualVM(您可能已经安装了它)可用于查看哪些类正在消耗最多的处理器时间以及哪些对象占用内存(以及是谁创建了它们)。
启动 VisualVM,您应该会看到 Eclipse 在应用程序中列出。 右键单击 Eclipse 条目并在 VisualVM 中“打开”Eclipse。 您现在可以附加分析器并查看正在使用的类。
分析将使所有内容变慢(非常慢!),因此您可能需要从最小的示例开始,或者非常耐心。 特别是在分析开始时,它将花费很长时间,因为它会“注入”字节码以允许分析。

将PermGen空间从256M增加到512M有助于在一个包含160个项目的工作区(没有SSD硬盘)中随着时间的推移保持Eclipse的性能稳定。 - Julien Kronegg

6
启用调试是了解Eclipse正在做什么的一种方法。有关调试Eclipse构建器的信息可以在此处找到,但该过程是通用的,即您需要从命令行启动eclipse$eclipsec –debug > log.txt并使用.options文件为某些插件启用调试。我想您可能需要更仔细地查看“更新”和“构建”操作。
另一个选择是使用工具,例如MAT(内存分析器)YourKit。我发现YourKit非常有用,例如,您可以在YourKit中启用CPU分析,然后在Eclipse中执行某个您觉得需要很长时间的操作。一旦操作完成,您可以拍摄快照并在YourKit中进行分析。一个警告是,将YourKit分析器附加到Eclipse将进一步减慢Eclipse的速度。
话虽如此,一个工作区中有150多个项目有点太多了。如果可能的话,您应该为每个组件设置一个工作区,并将其余插件放在目标平台中。所有工作区都可以共享单个目标平台。由于必须生成大量的类文件,因此150多个项目的完整工作区构建可能需要相当长的时间,这意味着大量的磁盘IO,而Eclipse无法帮助您,只有SSD可以做到 :)

我同意。虽然我从未在Eclipse中遇到过速度问题,但当我不得不在我的主解决方案中编写130多个项目时,在Visual Studio中我确实遇到了速度问题(通常对我来说非常快)。 - codewario
@deepakazad,你会很惊讶,但是我的机器上有一个SSD硬盘 :) - Andrey Adamovich
@deepakazad,感谢你的调试技巧,我会尝试一下。 - Andrey Adamovich
@Andrey 即使使用SSD,150个项目也是相当多的 :) - Deepak Azad
@deepakazad,实际上我不同意你的观点。我一直在进行进一步的实验,并使用几乎相同的插件集和同一台机器上的Eclipse Galileo 32位JEE安装打开了所有这些项目。你知道吗?它运行得非常快。因此,我的STS安装出了问题。而且问题似乎不仅仅在构建器中,因为即使在IDE中没有任何操作时,它也会让CPU保持繁忙状态。 - Andrey Adamovich
@deepakazad,您已回答了我的原始问题,这就是为什么我接受您的答案的原因 :). 我会在有时间的时候继续使用STS。 - Andrey Adamovich

0

Eclipse 2019-09提出了一种新的方式:

自动检测Eclipse SDK中的UI冻结

Eclipse SDK已经配置为默认情况下在错误日志视图中显示UI冻结的堆栈跟踪,您可以使用此信息来识别和报告Eclipse IDE的慢部分。

https://www.eclipse.org/eclipse/news/4.13/images/freeze-event.png

您可以通过以下方式,在“常规 > UI 响应性监控”首选项页面中禁用监控或调整其设置。

https://www.eclipse.org/eclipse/news/4.13/images/ui-monitor-preference.png


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接