题 你怎么能加速Eclipse?


如何更快地使用Eclipse体验?

例如:我禁用了我不需要的所有插件(Mylyn,Subclipse,...)。

而不是使用插件 水银,我配置 TortoiseHG 作为外部工具。


1171


起源


安装更多(另外4GB)RAM。我有点认真。 Eclipse在3GB的Windows 7机箱上运行良好。不太热,内存较少。
版本控制将是我禁用插件的最后选择。我发现Eclipse在保持工作空间与文件系统同步方面仍然有些不可靠。我不是因为想要比当前插件中的东西更好的VC工具而责备你,但我之前已经被Eclipse咬过了。 - Kelly S. French
这里的答案将我的Eclipse启动时间从20秒减少到不到4秒。 - HDave
对于许多人而言,Eclipse Juno已经非常缓慢,比如切换编辑器等等。现在有很多上游性能修复可以改善这种情况很多。看到 wiki.eclipse.org/Platform_UI/Juno_Performance_Investigation 有关安装修补程序的说明。 - vertti
没有插件,对我来说仍然超级慢。启动时间并不算太糟糕,但任何时候它必须更新文件引用或其他东西,它需要不合理的长时间。它有时会因自动完成而滞后。 - sudo


答案:


Eclipse速度的三个最重要因素是:

  • 使用 最新版本的Eclipse (3.4撰写2008年时的Ganimede)
    注意 大卫巴拉日奇评论 (2014年7月)与六年前工作的标准相矛盾:

Indigo(3.7.2)SR2中的“相同”工作空间在4秒内加载,在Kepler SR2(4.3.2)中在7秒内加载,在Luna(4.4.0)中在10秒内加载。所有都是Java EE捆绑包。较新的版本有更多的捆绑插件,但趋势仍然很明显。 (通过“相同”工作区我的意思是:使用相同(另外安装)的插件,从版本控制中检出相同的项目)。

  • 用它启动它 最新的JDK (在撰写本文时为1.7,这并不妨碍您在Eclipse项目中使用您想要的任何其他JDK进行编译:1.4.2,1.5,1.6较旧...)

    -vm jdk1.6.0_10\jre\bin\client\jvm.dll
    
  • 配置 的eclipse.ini (看到 这个问题适用于完整的eclipse.ini

    -Xms128m
    -Xmx384m
    -XX:MaxPermSize=128m _# NOTE: this option is obsolete in Java 8, it will be ignored_
    -Xss2m
    [...]
    

Xmx 参数是Eclipse将获得的内存量(简单来说)。同 -Xmx384m,它有384 MB的RAM,用 -Xmx4G 它获得4 GB等


注意:

  1. 提到jvm.dll有优点:

    • 启动画面即将推出。
    • Eclipse.exe在进程列表中而不是java.exe。
    • 防火墙:Eclipse希望访问Internet而不是Java。
    • 窗口管理品牌问题,尤其是在Windows和Mac上。

    但如果你这也有一些缺点 试着把内存推得太高

  2. Eclipse采用的默认内存是 MaxPermSize和Xmx的组合。这里 取决于 总共512 MB,这对于1 GB内存计算机来说足够了。


397



jvm.dll与其他操作系统相同的是什么? - Daniel Rucci
@Dan:来自 wiki.eclipse.org/...:“jvm.dll 在窗口上, libjvm.so 在'nix平台上'。 - VonC
@Dan:不要混淆 libjava.so:在Linux上, libjava.so 依赖于取决于 libjvm.so,但反过来却不是这样: $ readelf -d libjava.so  Dynamic segment at offset 0x208a8 contains 25 entries:  Tag Type Name/Value 0x00000001 (NEEDED) Shared library: [libjvm.so] [...]:当库包含此类信息时, ld.so 会加载 libjvm.so 进程加载时自动 libjava.so。 - VonC
@Dan当没有给出-vm参数时,它默认会在Windows和平台默认库(例如libjvm.so)上使用jvm.dll。根据VonC发布的链接 “但如果你这也有一些弊端 试着把内存推得太高。“ - Drupad Panchal
“使用最新版本的Eclipse” - 根据我的经验,情况正好相反。 Indigo(3.7.2)SR2中的“相同”工作空间在4秒内加载,在Kepler SR2(4.3.2)中在7秒内加载,在Luna(4.4.0)中在10秒内加载。所有都是Java EE捆绑包。从来没有版本有更多的捆绑插件,但趋势仍然很明显。 (通过“相同”工作区我的意思是:使用相同(另外安装)的插件,从版本控制中检出相同的项目) - David Balažic


-Xverify:none 到你的 的eclipse.ini 文件。

它将大大减少你的Eclipse启动时间(如果不是更多,我的情况下会减少50%)。这将告诉VM不要验证它正在加载的所有.class文件。


244



是的,这有效!添加此选项后,我的RAD加载速度要快得多。 - jobinbasani
哇 - 这确实加快了启动时间。 - Joel
我添加了这个并且它返回了 初始化VM时出错在指定的VM不兼容的最小和最大堆大小 - adamwong246
课堂验证的目的是什么?如果我们在启动时禁用,Eclipse什么时候有机会这样做? - Ken Russell
@RajkumarMasaniayan类验证是确保要运行的代码不会试图欺骗JVM的步骤。 - Thorbjørn Ravn Andersen


视窗  - > 优先  - > 验证 并取消选中任何 validators 你不想要或不需要。

对于Eclipse 3.7,您可以使用 视窗  - > 优先  - > 一般  - > 启动和关机


116





确保您使用Sun JVM来运行Eclipse。

在Linux上,特别是Ubuntu,Eclipse默认安装使用开源GCJ,它的性能极差。使用 update-alternatives --config java 切换到Sun JVM以大大提高Eclipse中的UI快捷性。


86



到目前为止,您可以安装openjdk-7,它与Sun Java 7没有太大区别。 - Anony-Mousse
不,Open vs Oracle中的垃圾收集速度明显变慢。这是由于算法的专利问题。 - Mark Lopez
@MarkLopez你能为这个权威来源添加一个链接吗? - Thorbjørn Ravn Andersen
在许多情况下,IBM JVM过去表现优于Sun JVM ....时间可能已经改变了! - MikeW
现在(2017年)你应该用OpenJDK 8运行Eclipse(java -version 应该说类似的东西 openjdk version "1.8.0_131")。我发现OpenJDK 9导致许多任务的性能更差(更高的延迟)。 - Mikko Rantalainen


关闭所有当前未使用的打开项目。

尝试在开发期间关闭自动发布模式。


48



刚刚学会了另一个这个技巧。关闭未打开的(我的工作空间必须大约20-30)会立即产生明显的差异。 - tunaranch


谢谢你的提示。 这些选项(如上所述)对我帮助很大:

视窗: 

在eclipse.ini中增加内存和我更新的Java版本:

-Dosgi.requiredJavaVersion=1.6
-Xms256m
-Xmx512m
-XX:PermSize=512m
-XX:MaxPermSize=512M
-Xverify:none

Linux / Ubuntu:

运用

update-alternatives --config java

47



为什么要将XmX设置为512m? - Igor Ganapolsky
在Ubuntu中运行命令会导致以下结果:“无需配置。” - Igor Ganapolsky
@Igor,堆空间大小(-XmX)取决于你的系统的内存。当我问这个问题时,512m是我旧的WinXP上网本的优化值。在这里阅读更多: stackoverflow.com/questions/4304312/... - Mateng
我的意思是运行update-alternatives --config java。这与Eclipse.ini无关 - Igor Ganapolsky
好吧,“没什么要配置的。”意味着一切都很好。 - Mateng


通过禁用标签装饰可以获得另一个性能提升 (Windows -> Preferences; General -> Appearance -> Label Decorations) 并通过在启动时禁用未使用的功能 (Windows -> Preferences; General -> Startup and Shutdown)。

根据您的JVM,您可以通过选择不同的垃圾收集策略来获得额外的性能。

如果你厌倦了重启循环,你可以使用 JavaRebel 来自ZeroTurnaround。这将缩短您在服务器/客户端重新启动上花费的时间。


44



如果您正在寻找OpenSource替代方案,请尝试使用DCE VM而不是JavaRebel。 - ssw.jku.at/dcevm - KrishPrabakar
我喜欢启动和关机提示。 - Christophe Roussy
如果您列出哪些装饰器有用,这个答案会更有用。对我来说至少是SVN,还有一些错误修饰器。 - SPRBRN
DCE VM“注意:最新的Java版本1.6更新26与DCE VM不兼容。支持所有旧的Java 1.6版本。” - aliopi
小心不要盲目地删除装饰品(因为我曾经做过一次并丢失了一些重要信息,如git标签等。请参阅: stackoverflow.com/questions/50861795/...) - JavaTec


虽然与Eclipse没有直接关系:

如果您运行的是Windows 7(可能是Windows Vista),请务必禁用工作区文件夹的文件索引(如果您的内容位于默认位置 - 您的主文件夹)。 Windows默认情况下会对您主文件夹中的所有内容进行索引,这通常只会浪费您的工作区。 (右键单击资源管理器中的工作区文件夹, 属性  - > 高级。)


38



这种技术甚至可以扩展到整个系统磁盘和其他驱动器。最好在全新安装后执行此操作,因为如果您有更多文件,则该过程可能需要更多时间。右键单击目标驱动器,在“常规”选项卡的底部取消选中“允许此驱动器上的文件除了文件属性之外还索引内容”。一个递归过程将开始,这可能需要很长时间,但最终会有成效。 (虽然它有很大的不同,但我将这种技术与在Linux上安装带有“noatime”和“nodiratime”选项的文件系统进行比较。这也可以创造奇迹。) - Csaba Toth
除了你通常不使用windows中嵌入的搜索功能外,我建议一般不要使用索引器。对于工作区,最好关闭它。 - Kami Kaze


禁用病毒扫描程序,或者至少将任何病毒扫描程序配置为在读取访问时不扫描JAR文件。


31



对赛门铁克来说,这有很大的不同。 - Thorbjørn Ravn Andersen
你救了我的一天! - Jorge P.


Eclipse懒洋洋地加载插件,以及最常见的插件, 喜欢 Subclipse的,如果你不使用它们,不要做任何事情。 它们在运行期间根本不会降低Eclipse的速度 不会帮助你禁用它们。事实上, Mylyn的 被证明是 正确使用时减少Eclipse的内存占用。

我用大量的插件运行Eclipse而没有任何性能 罚款。

  • 尝试禁用您可能没有的编译器设置 需要(例如,“参数永远不会被读取”下的子选项)。
  • 您使用的是哪个版本的Eclipse?旧版本 众所周知,如果你反复升级它们会很慢 再次,因为他们的插件文件夹膨胀了 使用重复的插件(具有不同的版本)。这个 版本3.4中不是问题。
  • 使用工作集。他们比关闭项目更好, 特别是如果你需要在两组之间切换 项目一直在进行。

使用-Xmx不仅需要增加内存 切换,它也是 烫发大小。我觉得 问题在Eclipse 3.4中解决了。


28





还有一件事在Windows和Linux上真正加速了Eclipse - 将JVM放在RAM磁盘中。

对于Windows,您可以使用商业广告 来自Qsoft的RAM磁盘驱动程序

对于Linux,请使用Internet上众多文章中描述的任何方法。为RAM磁盘提供额外的空间非常重要,该磁盘大小比JVM大10%。

一探究竟。它真的有所作为。


25



这很有效 奇迹 在Ubuntu上10.04 amd64 !!!! - Миша Кошелев
对于Windows开源RamDisk - ltr-data.se/opencode.html/#ImDisk - KrishPrabakar
你能澄清一下吗?你的意思是将目标/ bin文件夹放在ramdisk上吗? - nafg
您只需在安装到ramdisk后复制JRE或JDK目录的全部内容即可。在eclipse.ini中,你可以在ramdisk> /jre/bin/server/jvm.dll(windows)或jvm.so上为linux添加参数-vm <路径到jdk - Darko Miletic
除非jvm从缓存中不断刷新,否则怎么可能在具有相当数量ram的linux机器上做任何差异?难道你不能做一个 grep -r 或者也许使用 vmtouch 将页面加载到fs缓存中? - KarlP