`

eclipse启动慢解决方法

 
阅读更多
来自:http://my.oschina.net/xpbug/blog/111250
最近自从eclipse安装了很多插件以后,启动变得非常的慢,每次启动,要消耗近半分钟.这是不正常的. 今天决定好好优化一下.

我所使用的eclipse是Eclipse Java EE IDE for Web Developers 3.8版本. 跑在MAC OSX上, SSD+8G RAM, 这么高性能的机器竟然不能秒开eclipse, 这太说不过去了. 哦,还有我使用的JVM是Oracle的HotSpot,来自于JDK1.6 64bit.

首先,在优化前,让我们看看eclipse启动时,JVM的各项性能指标. 因为我并不能准确的判定eclipse的启动完成时间, 所以我只能说大约事件.

首先启动JDK自带的JVM性能监视工具,在java\bin的目录下,有一个jvisualvm,它是绑定在JDK中的visualvm.双击启动visualvm. 然后启动eclipse, 在eclipse启动完成以后,使用visualvm的查看eclipse的Visual GC情况, 如图:



上图中说明在eclipse的启动过程中,JIT对字节码进行了向机器码的编译,花去了22秒的时间.Class加载花去了10秒的时间,Minor GC发生了72次,花去0.64秒,Full GC发生了12次,仅仅花去了61毫秒.

我们再去MBean选项查看,发现新生代使用ParNew垃圾收集器,而老年代使用的是CMS垃圾收集器.



总上情况看出,由于MAC的性能比较好,所以垃圾回收并没有消耗太多的时间,并且CMS+ParNew本身就是并行垃圾回收,不会造成用户程序太多的停顿. 时间主要消耗在了JIT的即时编译和Class加载上了.

首先要优化的就是class加栽.因为eclipse这个工具是一个成熟的工具,经过了这么多人的验证,所以我充分信任eclipse的代码,允许eclipse的代码在加载的时候,跳过字节码验证. 关闭字节码验证的方法是在vm的args中加入参数 -Xverify:none. 对于eclipse来说,找到eclipse.ini, 加入-Xverify:none. 让我们再重启一下eclipse,看看class加载时间是否减小. 再次启动,发现class加载事件缩小到7秒,比之前少了3秒.

然后优化的是JIT的时间. 在使用eclipse编写程序时,主要是文本编辑,编译和运行,JIT虽然可以带给我们高性能,但是JIT在编译机器码的时候,却要消耗很多的时间. eclipse对项目的编译和运行本身就很慢,切运行时是启动一个新的java进程,跟eclipse本身无关,所以,我可以接受抛弃JIT编译器,而只是用JVM解释器执行字节码所带来的效率降低. 这样可以去除JIT编译的时间. 做法如下,在eclipse.ini中加入vm的参数 -Xint, 意思是只使用解释器. 让我们来看看结果:



JVM编译器时间变成了0, 一下减掉20秒. 但是,由于缺少了运行时的即时编译优化方案,代码的运行时间变长了, eclipse的整体启动时间慢了更多,超过了30秒. 由此可见,JIT是多么有用的一项技术.所以禁止JIT的尝试失败了.我们把之前的参数-Xint去掉.

哦,对了,我还装了很多的插件,尤其是android开发插件.启动的时候对插件的激活也会花去很多时间. 屏蔽插件激活的方法: Windows -> Preferences, 输入 “startup”, 点击 “Startup and Shutdown”, 把不需要的插件勾掉. 此外,还需要关掉不必要的validation,方法为:Windows -> Preferences -> Validation. 只选你需要的.

做完以上工作,我发现eclipse启动稍微快了一些. 掐着秒表计算的花了大约15秒.

最后,再优化一下GC和堆栈吧.虽然说,GC已经表现的很好了,都没有超过1秒,但是GC的频率如此高,说明JVM的内存的分配是不合理的.为此,我们需要重新对JVM内存进行划分. 为了对JVM的内存进行合理分配,我们需要了解eclipse启动过程中,GC到底发生了什么事情. 打开gc log的方法如下:

想eclipse.ini的vm参数中添加
-XX:+PrintGCDetails
-Xloggc:/users/joey/Documents/gc.log

启动eclipse,生成gc.log, 打开log,进行分析.

第一次Minor GC发现,新生代的大小约为20M. 堆的大小约为40M. 再接下来的GC中,新生代始终没有扩容.这说明,新生代的大小合适.
0.720: [GC 0.720: [ParNew: 17024K->2112K(19136K), 0.0099529 secs] 17024K->2324K(38848K), 0.0100285 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

第一次发生Full GC时,发现老年代已经扩容到约93M,而永生代扩容到约128M
67.213: [Full GC (System) 67.213: [CMS: 57969K->57877K(93124K), 0.3563491 secs] 62179K->57877K(112260K), [CMS Perm : 80490K->80392K(128708K)], 0.3565176 secs] [Times: user=0.36 sys=0.00, real=0.36 secs]

而直到最后一次GC, 老年代占用也没超过125M,永生带占用也没有超过125M. 但他们的占用空间均超过了100M. 由此,我们有理由规定一个初始堆大小. 最终,通过分析,我给eclipse.ini添加了如下几个参数:

-server
-Xverify:none
-XX:PermSize=128m
-XX:MaxPermSize=256m
-Xms256m
-Xmx512m
-Xmn40m
-Xss2m


-server是让JVM以server模式运行,加重JIT的优化作用,由于eclipse是经常开着不关,在server模式下,JIT会随着运行的时间,把字节码更深刻的变成成机器代码.加快运行速度.
-Xverify:none, 跳过对字节码的验证.
PermSize永生带设置为128M,堆的初始大小设置为256M,新生代站了40M. 每个线程栈大小设为2M.

在这种设置下,Full GC已经完全消失,但还是剩下了20次左右的Minor GC,大约花掉0.3秒, 这是可以接受的. 如果为了完全消除GC而把新生代的空间设大,那也是一种内存的浪费. 重启eclipse,启动时间已经落在了15秒之内.如图:

分享到:
评论

相关推荐

    解决eclipse自动提示反应慢的方法

    Eclipse 自动提示反应慢解决方法总结 Eclipse 是一个功能强大且广泛使用的集成开发环境(IDE),它提供了丰富的插件和功能来满足开发者的需求。然而,在使用 Eclipse 时,许多开发者可能会遇到自动提示反应慢的问题...

    eclipse启动时间插件

    Eclipse是一款广泛使用的开源...总的来说,“eclipse启动时间插件”是针对Eclipse启动慢问题的一种解决策略,通过优化启动流程来提升效率。不过,用户还需要结合自身情况,综合运用多种方法来最大化Eclipse的启动速度。

    Myeclipse启动慢解决方法

    【MyEclipse启动慢的解决方法】 MyEclipse是一款强大的集成开发环境,但在使用过程中,有时会出现启动缓慢的问题,这可能影响开发效率。以下是一些优化MyEclipse启动速度的方法: 1. **去除不需要加载的模块** ...

    Eclipse启动Tomcat超时问题的解决方法

    Eclipse启动Tomcat超时问题的解决方法 Eclipse 是一个流行的集成开发环境(Integrated Development Environment,IDE),而 Tomcat 是一个常用的 Web 应用服务器。然而,在使用 Eclipse 启动 Tomcat 服务器时,可能...

    解决eclipse安装Jboss Tools插件后自动提示变慢.pdf

    描述所涉及的知识点:当用户在Eclipse中安装了Jboss Tools插件之后,可能会发现Eclipse的启动和运行速度变慢,而文章的目的是提供解决这一问题的方法。 标签所指示的知识点:Eclipse和Jboss Tools是关键词,意味着...

    eclipse启动优化

    总的来说,优化Eclipse启动速度涉及多个方面,包括合理组织工作空间、调整配置、管理插件、利用启动模式以及保持系统更新。通过这些方法,可以显著提升Eclipse的启动效率,提高开发者的生产力。

    Eclipse 设置、调优、使用(解决 卡顿 编译 占内存等问题)

    2. 使用 Eclipse 的帮助功能:可以使用 Eclipse 的帮助功能来获取关于 Eclipse 的详细信息和使用方法。 五、相关链接 1. JVM 启动参数大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html 2. ...

    真正解决eclipse下智能提醒卡死的方法

    1. 调整Eclipse的内存分配,可以在Eclipse的启动脚本中增加参数,如`-Xms512m -Xmx2048m`,以提高初始堆内存和最大堆内存的大小。 2. 关闭不必要的应用程序和服务,释放更多系统资源供Eclipse使用。 通过以上步骤的...

    解决 Eclipse内存不足的问题

    该文件位于Eclipse安装目录下,用于设置Eclipse启动参数,包括JVM的内存分配。打开eclipse.ini,你会看到类似以下的行: ```ini -vmargs -Xms512m -Xmx1024m ``` 这里的`-Xms`和`-Xmx`是Java虚拟机的启动参数,...

    eclipse问题解决

    根据提供的信息,本文将针对Eclipse使用过程中遇到的一些常见问题及其解决方案进行详细的阐述与解析,以便帮助更多开发者解决实际工作中可能遇到的技术难题。 ### Eclipse简介 Eclipse是一款免费开源的集成开发...

    最新CodeMix eclipse 插件离线安装文件

    总结起来,CodeMix插件为Eclipse提供了强大的Vue.js支持和其他现代Web技术的集成,离线安装方法则解决了网络环境不稳定带来的困扰。通过将压缩包内的文件正确放置到Eclipse的`plugins`目录并按照上述步骤操作,即使...

    eclipse汉化包.rar

    5. 启动Eclipse,此时Eclipse应该已经自动识别并应用了汉化。如果未自动更新,你可以尝试重启Eclipse,或者通过"Window" -> "Preferences" -> "General" -> "Appearance" -> "Language"选项手动选择中文。 请注意,...

    eclipse_202206版本

    Eclipse是一款广受欢迎的开源集成开发环境(IDE),主要用于Java编程,同时也支持其他多种...如果你遇到从官方网站下载速度慢的问题,这个压缩包提供了一个方便的下载途径,确保你能快速获取到这个最新的Eclipse版本。

    eclipse-3.3.2官方下载地址

    1. **如何解决 Eclipse 启动缓慢问题?** - 确保有足够的内存分配给 Eclipse。 - 清理工作空间,删除不必要的项目。 - 关闭不必要的插件。 2. **如何配置 Eclipse 以支持特定的编程语言?** - 安装相应的插件,...

    eclipse加载汉化包步骤

    - 调整Eclipse的启动参数,增加分配给Eclipse的内存,或优化系统设置等方法可能有助于解决此类问题。 #### 五、总结 通过以上步骤,您可以顺利地为Eclipse安装中文汉化包,使其界面语言变为中文。这对于中文用户...

    mac Eclipse安装包

    如果未安装或版本不兼容,Eclipse启动时会报错。 - **性能问题**:Mac用户有时会遇到性能瓶颈,如卡顿或响应慢。这可能是由于内存不足或图形驱动不兼容。可以尝试调整Eclipse的内存设置,或者更新显卡驱动。 - **...

    eclipse一打开就会出现这个情况Loading descriptor for.......docx

    7. **社区求助**:如果以上方法都无法解决问题,可以在Eclipse的官方论坛或者Stack Overflow等技术社区发布问题,寻求其他开发者的经验和建议。 通过以上分析和解决步骤,大多数情况下可以解决“Loading descriptor...

    eclipse汉化包.zip

    这个"eclipse汉化包.zip"文件提供了Eclipse IDE的中文语言包,解决了中文用户在使用过程中因语言障碍导致的不便。文件描述中提到,此汉化包是从官网获取的,可能由于网络原因,直接从官网下载速度较慢。因此,提供这...

Global site tag (gtag.js) - Google Analytics