`
tudouxue
  • 浏览: 2635 次
社区版块
存档分类
最新评论

ecplise ini 的修改

阅读更多
首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse。优化的用例就是启动eclipse,open一个项目,eclipse会自动build这个项目,保证没有感觉到明显的卡,也就是没有full GC。

开始:

eclipse.ini里加入打印gc情况的参数:

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


这样eclipse在运行过程中会记录gc日志,显示详细的gc情况,并打印在gc.log中,通过分析这个日志寻找eclipse的性能瓶颈和优化方式。
我最初的参数只是在原版基础上调了堆大小
-Xms512m
-Xmx512m


将堆初始化和最大值设为一样,消除堆大小根据当前堆使用情况而变化带来的影响。
启动eclipse,发现gc.log里打出了很多full gc的日志
引用
4.226: [Full GC 4.226: [Tenured: 18470K->19304K(30544K), 0.1159544 secs] 25154K->19304K(44368K), [Perm : 24574K->24554K(24576K)], 0.1160431 secs] [Times: user=0.13 sys=0.00, real=0.13 secs]

在启动的6秒多时间里共出现了8次full gc,所以启动慢,觉得启动时候挺卡的。从日志里可以看出来 FullGC主要是在回收tenured区和Perm区,其中Perm一直都是快满的状态,Perm : 24574K->24554K(24576K),Perm大小在不断调整,所以需要固定Perm区的大小,保证够用,eclipse.ini里加入
-XX:PermSize=64m
-XX:MaxPermSize=64m


再启动:发现没有full gc了只有数量比较多的minor gc,挑启动开始到启动完成的第一条和最后一条日志
引用
0.209: [GC 0.209: [DefNew: 4416K->511K(4928K), 0.0034707 secs] 4416K->614K(15872K), 0.0035239 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
….
6.383: [GC 6.383: [DefNew: 18880K->1985K(21184K), 0.0055311 secs] 46992K->30098K(68040K), 0.0055694 secs]

这6秒中GC日志打了69次, 而内存回收率还是蛮高的 young区18880-1985=16895 jvm 46992-30098=16894 都快接近100%了,可以看出young区是由小到大在不断调整大小,所以不断GC,因此设一个初始值吧,据说设置heap的1/4比较好,那就是128M,所以eclipse.ini加入
-Xmn128m


再重启,发现GC日志就四条了,eclipse启动自然快了

引用
1.292: [GC 1.292: [DefNew: 104960K->10984K(118016K), 0.0334165 secs] 104960K->10984K(511232K), 0.0334603 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
2.182: [GC 2.182: [DefNew: 115944K->1852K(118016K), 0.0221714 secs] 115944K->11466K(511232K), 0.0222142 secs] [Times: user=0.00 sys=0.02, real=0.02 secs]
3.987: [GC 3.987: [DefNew: 106779K->12531K(118016K), 0.0378228 secs] 116393K->22145K(511232K), 0.0378692 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
5.377: [GC 5.377: [DefNew: 117491K->9403K(118016K), 0.0513728 secs] 127105K->31364K(511232K), 0.0514133 secs]


但是,启动后open我的多个项目,这些项目互相依赖,eclipse自动build,感觉有点小卡,发现日志里多了4次full GC,所以就卡了…
引用
67.320: [Full GC (System) 67.320: [Tenured: 88847K->68809K(393216K), 0.2121213 secs] 117385K->68809K(511232K), [Perm : 41915K->41915K(65536K)], 0.2121747 secs] [Times: user=0.20 sys=0.00, real=0.20 secs]
103.759: [Full GC (System) 103.759: [Tenured: 81882K->66784K(393216K), 0.3287387 secs] 185350K->66784K(511232K), [Perm : 53464K->53414K(65536K)], 0.3287897 secs] [Times: user=0.33 sys=0.00, real=0.33 secs]


这个时候Tenured区和Perm都还没到很接近最大值,但是为什么还有full GC呢,开始以为是JVM悲观认为Tenured区剩余空间不足以应对下一次minor GC 所以进行了full GC调整Tenured空间,索性直接增加了堆最大值到-Xmx728m(工作电脑的内存是3.5G),但重启后full gc还是有4次,而且有几次minor GC用的时间超过了0.1秒,这是因为增加了堆大小,导致GC用时也增加了,不能接受。所以还是改回-Xmx512m。
再仔细观察日志,发现Full GC (System) 字样,这个意思是eclipse里调用了System.gc()手动触发了系统GC,好吧,哥已经给你分配足够空间了,你就省省吧,在eclipse.ini里加入:
-XX:+DisableExplicitGC


这样就差不多了,整个过程没有出现full gc,再编码2个小时,中间只出现了一次full gc,在open build某50W行+的代码的时候,eclipse还是卡了…
最后又稍微调了一下各代的大小,得到目前的参数:
-Xms512m
-Xmx512m
-XX:PermSize=96m
-XX:MaxPermSize=96m
-Xmn168m
-XX:+DisableExplicitGC


最后一行意思是:无视代码中的system.gc()

另外没有去调GC策略,主要是觉得eclipse是客户端程序,默认的client单线程的GC策略应该是比较适合的,以后有时间再试试看吧。
分享到:
评论

相关推荐

    eclipse.ini配置

    eclipse.ini配置推荐(8or16GB)Java堆内存详解eclipse运行速度慢或者卡的时候有多方面、其中一方面可以通过更改eclipse.ini来更改 如下是我的eclipse.ini的相关配置、以及后面的详细说明 机器物理内存16GB (8G内存...

    eclipse.ini

    eclipse.ini 在官方退出的eclipse SDK3.7上,对原配置进行修改,是工具使用更流畅。分享下 eclipse SDK(纯洁版) http://pan.baidu.com/s/1jGxjjxk eclipse SDK(纯洁版上集成Web开发) ...eclipse IDE(集成常用插件,...

    eclipse。ini

    java编译环境打开失败使用。并且针对eclipse安装失败时的设定。

    Eclipse注释模板变量补丁

    Eclipse的代码注释模板很丰富,如:user、year、date、time等等,通过在eclipse.ini文件中-Duser.name=xxxx进行配置,但是Eclipse的Preferences界面至今都不支持定制自己的注释模板变量,要新增一个注释变量的话,就...

    eclipse安装插件activiti-designer-5.18.0

    2、修改E:\ruan jian\eclipse\configuration目录下config.ini文件里的org.eclipse.update.reconcile=false 为 org.eclipse.update.reconcile=true 3、解压出来将jar包分别放到eclipse的plugins和features目录下...

    eclipse的中文注释缩进和大小不一致问题解决

    2、修改文件eclipse\eclipse.ini,将原来的配置改为如下配置,其他的配置不动,只改第二行,第四行。 -startup plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar --launcher.library plugins/org....

    不配置环境变量启动eclipse

    不配置环境变量启动eclipse 修改 eclipse目录下 eclipse.ini 文件,如下: 主要添加了 -vm。

    Eclipse_3.5.2_win32多国语言包

    Eclipse for php 3.5 1、语言包,下载之后,全选zip的压缩包,解压到当前目录, 2、把解压出来eclipse目录拷贝到eclipse的安装...3、修改eclipse.ini文件,在末尾加上一行 -Duser.language=en 4、重启eclipse就可以

    activiti designer 5.14.0 eclipse 插件(附安装方式,及安装后出现问题的解决办法)

    acitiviti designer eclipse插件 版本 5.14 安装方法: eclipse 安装压缩包中的zip文件, 如果安装后出现问题, ...需修改eclipse.ini文件 -vm C:\Java6\jdk1.6.0_10\bin\javaw.exe (要放在第一行,路径做对应调整)

    eclipse-jee-oxygen-2-win32-x86_64+SVN客户端+JAVA反编译+STS

    eclipse-jee-oxygen-2-win32-x86_64+SVN客户端+JAVA反编译+STS SVN客户端:Subclipse 4.2.3 JAVA反编译:Enhanced Class Decompiler 3.0.0 STS:Spring Tool Suite...解压即用,但务必修改eclipse.ini里面你的JDK路径。

    Eclipse&Myeclipselanguage

    本汉化包的汉化文件来自于Babel,eclipse的官方汉化网站,经《昶洁网络社区》技术人员修改整理及制作教程,目前测试支持版本适用于Eclipse3.0-3.4(MyEclipse5.0-7.5) MyEclipse7.0以上版本插件使用方法 1.将language...

    更改MyEclipse开启图

    更改MyEclipse开启时的图片 修改MyEclipse 6.5\eclipse\eclipse.ini这个文件。

    MemoryAnalyzer内存分析工具单独软件无需安装18.1

    MAT 软件版本解压后目录内有个MemoryAnalyzer.ini文件,该文件里面有个Xmx参数,该参数表示最大内存占用量,默认为1024m,根据堆转储文件大小修改该参数即可。 1. MemoryAnalyzer.ini中的参数一般默认为-vmargs– ...

    Maven插件安装使用说明

    1、 在eclipse.ini中添加VM启动参数,制定eclipse启动使用的vm,修改后的文件内容如下 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256M -vm C:\Program Files\Java\jdk1.5.0_12\bin\javaw....

    JWFD v0.94工作流源代码 for eclipse(BUG修正版)

    如果要修改JWFD的界面部分,请使用SUN的NETBEAN或者JBUILDER来完成 因为JWFD的界面是SWING设计的 ================================================ 欢迎访问我的博客 comsci.javaeye.com 关注JWFD的最新进展 =...

    jdk-11.0.1.zip 免安装 解压版

    jdk-11.0.1 .zip 免安装 解压版 亲测有用,直接解压的文件夹就可以用,打开eclipse.ini修改即可,具体可百度

    jdk-10.zip 免安装 解压版

    jdk-10.zip 免安装 解压版 亲测有用,直接解压的文件夹就可以用,打开eclipse.ini修改即可,具体可百度

    MyEclipse8.5 汉化包

    这时要全部把控制台输出的英文都复制到 C:/Program Files/Genuitec/MyEclipse 8.5/configuration/org.eclipse.equinox.simpleconfigurator ,用记事本把bundles.info 打开,在最后一行回车一下。把刚才在控制台里面的...

    jdk1.7.0_51.zip 免安装 解压版

    jdk1.7.0_51.zip 免安装 解压版 亲测有用,直接解压的文件夹就可以用,打开eclipse.ini修改即可,具体可百度

Global site tag (gtag.js) - Google Analytics