我们有相当大的代码库(150多个项目,400,000多行Java代码,一些Groovy和Gradle代码,一些Perl代码,一些XML,许多JSP等)。我设法在Spring Tools Studio 2.6中打开所有这些项目,我还为Groovy,Perl,Checkstyle,PMD添加了一些插件。
问题是Eclipse始终保持CPU忙。当我更新某些内容时,它的速度非常慢,它正在缓慢构建,任何类型的UI操作都会延迟发生。
此外,我有相当不错的机器64位,8GB的RAM和我运行64位版本的STS,我给了2GB的Eclipse(但它不会高出1GB的堆)。
所以,我的第一个问题是有一种方法来确定是什么让它变慢?你们中的一些人是否成功地在一个工作区中使用如此庞大的代码库?
我已经尝试查看运行Eclipse的JVM的线程(使用jconsole),但我找不到任何有用的东西。
通过启用调试来了解Eclipse正在做什么的一种方法。有一些信息 这里 关于调试eclipse构建器,但是这个过程是通用的,即你需要从命令行启动eclipse $ eclipsec -debug> log.txt 并使用。启用某些插件的调试 可供选项 文件。我想你会想要仔细看看'更新'和'构建'操作。
另一种选择是使用工具,例如 MAT(内存分析器), YourKit。我发现YourKit非常有用,例如你可以在YourKit中启用CPU分析,然后在Eclipse中执行一个你觉得需要花费很多时间的动作。操作完成后,您可以拍摄快照并在YourKit中进行一些分析。需要注意的是,将YourKit分析器附加到Eclipse将进一步减慢Eclipse的速度。
说过一个工作区中的150多个项目有点多。如果可能,您应该为每个组件设置一个工作区,其余插件位于目标平台中。您的所有工作区都可以共享一个目标平台。有150多个项目,单独一个完整的工作区构建可能需要相当长的时间,因为必须生成大量的类文件,这意味着大量的磁盘IO,而eclipse无法帮助你只有一个SSD可以:)
我会提出一些建议 - 这些都是为了方便。如果你想知道它是什么插件并加入该项目来修复它或将仇恨邮件发送到支持列表,那么你可能想跳到下面的“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。您现在可以附加分析器并查看正在使用的类。
分析会减慢一切(很多!)所以你可能想要从尽可能小的例子开始 - 或者非常耐心。特别是在分析开始时,它需要很长时间才能“检测”类(注入字节码以允许分析)。