2013第51周二eclipse启动优化

今天注意到了eclipse.ini配置文件中gc.log——在eclipse启动时清空,然后记录了eclipse每次运行过程中的gc分配情况,看到了一篇很好的eclipse启动调优文章:

减少jvm内存回收引起的eclipse卡的问题
这个主要是jvm在client模式,进行内存回收时,会停下所有的其它工作,带回收完毕才去执行其它任务,在这期间eclipse就卡住了。所以适当的增加jvm申请的内存大小来减少其回收的次数甚至不回收,就会是卡的现象有明显改善。

主要通过以下的几个jvm参数来设置堆内存的:

-Xmx512m 最大总堆内存,一般设置为物理内存的1/4
-Xms512m 初始总堆内存,一般将它设置的和最大堆内存一样大,这样就不需要根据当前堆使用情况而调整堆的大小了
-Xmn192m 年轻带堆内存,sun官方推荐为整个堆的3/8
堆内存的组成 总堆内存 = 年轻带堆内存 + 年老带堆内存 + 持久带堆内存
年轻带堆内存 对象刚创建出来时放在这里
年老带堆内存 对象在被真正会回收之前会先放在这里
持久带堆内存 class文件,元数据等放在这里
-XX:PermSize=128m 持久带堆的初始大小
-XX:MaxPermSize=128m 持久带堆的最大大小,eclipse默认为256m。如果要编译jdk这种,一定要把这个设的很大,因为它的类太多了。

-XX:+UseParallelGC 使用并发内存回收
-XX:+DisableExplicitGC 禁用System.gc()的显示内存回收

一般Xms、Xmx设置相同,PermSize、MaxPermSize设置相同,这样可以避免伸缩堆大小带来的性能损耗。

首先eclipse安装根目录下打开eclipse.ini,加上配置:

-Xloggc:gc.log
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails

目的是运行eclipse的时候可以打出详细gc过程。

启动eclipse,然后打开gc.log一看,哇塞启动一次就做了几十次GC,包括不少次Full GC,着手优化……

先解决Full GC的问题:

……
3.159: [Full GC 3.159: [Tenured: 22716K->26133K(35780K), 0.1116536 secs] 38493K->26133K(51908K), [Perm : 20479K->20479K(20480K)], 0.1117614 secs] [Times: user=0.11 sys=0.00, real=0.11 secs]
3.706: [Full GC 3.706: [Tenured: 26133K->27935K(43556K), 0.1235449 secs] 40042K->27935K(63204K), [Perm : 24575K->24575K(24576K)], 0.1236474 secs] [Times: user=0.13 sys=0.00, real=0.13 secs]
……

如上GC日志可以看出,Full GC主要是针对Tenured、Perm区的GC,好那先调整Perm大小,指定充裕的持久代区域,eclipse.ini中加入:

-XX:PermSize=128m
-XX:MaxPermSize=128m

再次启动看gc.log,Full GC没有了,但是还有很多次普通GC,说明还是需要进一步优化。
eclipse的初始堆大小分配得很小,因此不利于年轻代堆大小的分配,如果设置的年轻代堆大小Xmn大于最小堆大小Xms,eclipse将无法启动。
因此,将Xms调整为512m,重启动后观察GC大幅减少。
最后调整Xmn,年轻代堆大小,经过反复比较后,发现设置“-Xmn256m”效果最优。

优化后的GC日志:

3.203: [GC 3.204: [DefNew: 209776K->26176K(235968K), 0.0876304 secs] 209776K->27184K(498112K), 0.0876921 secs] [Times: user=0.09 sys=0.00, real=0.09 secs]
5.422: [GC 5.422: [DefNew: 235968K->12433K(235968K), 0.0989335 secs] 236976K->39296K(498112K), 0.0990229 secs]

在接近6秒的启动时间内,eclipse总共只做了2次普通GC回收,怎么样效果明显吧!

在eclipse启动的时候,它总是会搜索让其运行的jre,往往就是这个搜索过程让eclipse启动变慢了。(没设置时,等2-3s出现进度条,设置后直接出现进度条)

只要在eclipse.ini中加入-vm的参数就可以了


2.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作。


3.关闭自动更新

更多信息可参考:

jvm启动参数大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html
jvm结构的一些知识(其中的堆的构成):http://hllvm.group.iteye.com/group/wiki/2905-JVM
jvm堆知识:http://ruijf.iteye.com/blog/1028455
eclipse启动调优:http://www.iteye.com/topic/756538
eclipse自带的help contents(搜索"Running Eclipse"可以找到启动相关的配置)

  

2013第51周二eclipse启动优化的更多相关文章

  1. eclipse启动优化,终于不那么卡了!

    eclipse启动优化,终于不那么卡了! 网上找了好多都是myEclipse的优化的,跟eclipse有点区别,找了很多方法还是不能让这个eclipse(Version: Kepler Release ...

  2. eclipse启动优化文章集合

    1. eclipse启动优化,终于不那么卡了! http://www.cfei.net/archives/445

  3. 【eclipse】eclipse启动优化&打印GC信息&重要的堆结构连接

    eclipse启动优化,终于不那么卡了! 网上找了好多都是myEclipse的优化的,跟eclipse有点区别,找了很多方法还是不能让这个eclipse(Version: Kepler Release ...

  4. 2013第50周二eclipse工具尝试

    今天更深入的认识了eclipse开发工具,出现了各种问题在网络的帮助下最终都解决了,感觉似乎明白了很多道理需要总结一下,现在发现晚了,那就先记录下我印象深的几个问题吧: 1.eclipse编辑器设置. ...

  5. IDEA和Eclipse启动优化

    昨天对比了下IDEA和Eclipse的启动速度,发现IDEA启动真的是好慢啊!!! 电脑配置:8G win7 IDEA启动配置 -Xms1024m -Xmx1024m -Xmn500m -XX:Met ...

  6. eclipse运行速度优化(解决狂读盘、发布慢、CPU100%等问题)

    转自:http://blog.csdn.net/wyp_810618/article/details/8953921 我的ECLIPSE运行时速度奇慢,具体表现为: 1.只要ECLIPSE启动后,硬盘 ...

  7. spring +hibernate 启动优化【转】

    最近在负责一个大项目,项目组成员包括项目经理大概10个人左右.项目技术用struts+spring+hibernate实现.项目的规模相对来说是比较大的,总共有10大模块,每个大模块又分为有十几个.甚 ...

  8. eclipse的优化 gc.log

    原帖:http://www.javaeye.com/topic/756538 性能优化从身边做起. 首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse.优化的用例就是启 ...

  9. Eclipse启动参数设置

    Eclipse启动参数设置 文件路径:安装目录根路径/eclipse.ini 参数注解: [-debug options -vm javaw.exe] 显示JVM当前内存使用量(注:详见下方<让 ...

随机推荐

  1. EBS查询用户客户化的文件配置

    select pro.profile_option_name, pro.user_profile_option_name, lev.level_type type, --lev.level_code, ...

  2. Longest Consecutive Sequence 解答

    Question Given an unsorted array of integers, find the length of the longest consecutive elements se ...

  3. Linux 程序设计的一些优化措施

    Linux 程序设计的一些优化措施 这些知识是在平常的阅读中,零散的获得的,自己总结了一下,分享在这里 全局变量VS函数参数 全局变量在Linux下的驱动编程里边,用的是非常多,例如中断服务函数ISR ...

  4. hdu 5640 King's Cake(模拟)

    Problem Description   It is the king's birthday before the military parade . The ministers prepared ...

  5. Exchange Server 2010升级到Exchange Server 2013概览

  6. 安卓Menu键的问题

    近期开发中有须要Menu键,结果发现了一个非常尴尬的问题.我的測试机上有Menu键.可是測试平板上没有,队友的測试机上竟然也没有Menu键.这着实有些尴尬... 上网谷歌之后才发现问题所在: 仅仅有在 ...

  7. J2EE之普通类载入web资源文件的方法

    在WEB中普通类并不能像Servlet那样通过this.getServletContext().getResourceAsStream()获取web资源,须要通过类载入器载入,这里有两种方式,这两种方 ...

  8. 在asp.net中导出表格Excel数据

    第一步:需要引用org.in2bits.MyXls程序集到使用页面 第二步:前台代码 <asp:Button ID="LeadingOut" runat="serv ...

  9. TortoiseSVN和VisualSVN-下载地址

    isualSVN的下载地址http://www.visualsvn.com/visualsvn/ 它可以以插件的形式嵌入到visual studio里面,让团队协作更轻松,最新的版本已经支持Visua ...

  10. Nohttp网络请求数据,Post以及Get的简单实用以及设置缓存文字的的请求

    开局声明:这是基于nohttp1.0.4-include-source.jar版本写的教程 由于nohttp功能强悍,因此需要多种权限,仅仅一个联网的权限是不够的,如果只给了Internet的权限,去 ...