如何确定Eclipse变慢的原因?

时间:2011-06-08 09:43:28

标签: eclipse performance codebase

我们有相当大的代码库(150多个项目,400,000多行Java代码,一些Groovy和Gradle代码,一些Perl代码,一些XML,许多JSP等)。我设法在Spring Tools Studio 2.6中打开所有这些项目,我还为Groovy,Perl,Checkstyle,PMD添加了一些插件。

问题是Eclipse一直在忙着占用我的CPU。当我更新某些内容时,它的速度非常慢,它正在缓慢构建,任何类型的UI操作都会延迟发生。

此外,我还有相当不错的机器64位,8GB内存,我运行64位版本的STS,我给了2GB的Eclipse(但它不会高出1GB的堆)。

所以,我的第一个问题是有没有办法确定是什么让它变慢?你们中的一些人是否成功地在一个工作区中使用如此庞大的代码库?

我已经尝试查看运行Eclipse的JVM的线程(使用jconsole),但我找不到任何内容。

3 个答案:

答案 0 :(得分:8)

我会提出一些建议 - 这些都是为了方便。如果你想知道它是什么插件并加入该项目来修复它或将仇恨邮件发送到支持列表,那么你可能想跳到下面的“Profile It”。

检查控制台

如果从命令行启动eclipse(即键入eclipse),那么如果有任何异常被抛出,你会在这里看到它们。有时缓慢可能是由于插件反复失败并引发大量异常。有时它是你可以解决的问题 - 有时你必须删除该插件。

提升你的RAM

我们喜欢GC,但它导致慢慢死亡。 GC的美妙之处在于你的程序永远不会耗尽内存 - 因为用户认为它已经锁定并在实际耗尽RAM之前将其杀死。因此,尝试增加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。您现在可以附加一个分析器并查看正在使用的类。

分析会减慢一切(很多!)所以你可能想从最小的可能示例开始 - 或者非常耐心。特别是在分析开始时,它需要很长时间才能“检测”类(注入字节码以允许分析)。

答案 1 :(得分:6)

通过启用调试来了解Eclipse正在做什么的一种方法。有一些关于调试eclipse构建器的信息here,但是这个过程是通用的,即你需要从命令行启动eclipse $ eclipsec -debug> log.txt 并使用 .options 文件启用某些插件的调试。我想你会想要仔细看看'更新'和'构建'操作。

另一种选择是使用工具,例如MAT (Memory Analyzer)YourKit。我发现YourKit非常有用,例如你可以在YourKit中启用CPU分析,然后在Eclipse中执行一个你觉得需要花费很多时间的动作。操作完成后,您可以拍摄快照并在YourKit中进行一些分析。需要注意的是,将YourKit分析器附加到Eclipse将进一步减慢Eclipse。

说过一个工作区中的150多个项目有点多。如果可能,您应该为每个组件设置一个工作区,其余插件位于目标平台中。您的所有工作区都可以共享一个目标平台。有150多个项目,单独一个完整的工作区构建可能需要相当长的时间,因为必须生成大量的类文件,这意味着大量的磁盘IO,并且eclipse无法帮助你只有SSD可以:)

答案 2 :(得分:0)

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

  

在Eclipse SDK中冻结UI的自动检测

     

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

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

  

您可以通过General > UI Responsiveness Monitoring首选项页面中的选项来禁用监视或调整其设置,如下所示。

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