如何更快的启动eclipse总是感觉自己的elipse启动比别人的慢,开始以为是装的插件太多(pydev,GAE,scala……)或
如何更快的启动eclipse
总是感觉自己的elipse启动比别人的慢,开始以为是装的插件太多(pydev,GAE,scala……)或者是导入的项目有点大。后来把-Xloggc:gc.log这个配置加上去看看启动的日志,吓了一跳,一次启动做了9次fullgc。和jboss服务器一样,肯定可以优化一下配置来更少的full gc来节约启动时间。
?? 第一次优化:把-Xms(初始化堆大小)?-Xmx(JVM最大堆大小)设置为一样大小512m,避免GC后JVM重新分配内存。但是重启eclipse的时候full gc的次数并没有减少,而且启动的时候GC全部变成了full gc,日志如下:
3.308: [Full GC 3.308: [Tenured: 0K->19530K(262144K), 0.1515426 secs] 172215K->19530K(498112K), [Perm : 16383K->16383K(16384K)], 0.1516281 secs] [Times: user=0.14 sys=0.00, real=0.15 secs]?
8.472: [Full GC 8.472: [Tenured: 19530K->34170K(262144K), 0.2060534 secs] 145021K->34170K(498112K), [Perm : 20479K->20479K(20480K)], 0.2061412 secs] [Times: user=0.19 sys=0.00, real=0.21 secs]?
9.027: [Full GC 9.027: [Tenured: 34170K->35855K(262144K), 0.1790415 secs] 54259K->35855K(498112K), [Perm : 24575K->24575K(24576K)], 0.1791281 secs] [Times: user=0.19 sys=0.00, real=0.18 secs]?
10.004: [Full GC 10.004: [Tenured: 35855K->44735K(262144K), 0.2850547 secs] 81210K->44735K(498112K), [Perm : 28671K->28646K(28672K)], 0.2851505 secs] [Times: user=0.28 sys=0.00, real=0.28 secs]?
10.725: [Full GC 10.725: [Tenured: 44735K->49542K(262144K), 0.2657311 secs] 71680K->49542K(498112K), [Perm : 32759K->32759K(32768K)], 0.2658216 secs] [Times: user=0.25 sys=0.00, real=0.27 secs]?
12.057: [Full GC 12.057: [Tenured: 49542K->64706K(262144K), 0.3637080 secs] 179985K->64706K(498112K), [Perm : 36863K->36863K(36864K)], 0.3637938 secs] [Times: user=0.37 sys=0.00, real=0.36 secs]?
12.788: [Full GC 12.788: [Tenured: 64706K->65640K(262144K), 0.3229940 secs] 87100K->65640K(498112K), [Perm : 40959K->40959K(40960K)], 0.3230836 secs] [Times: user=0.31 sys=0.00, real=0.32 secs]?
13.652: [Full GC 13.652: [Tenured: 65640K->70639K(262144K), 0.4553435 secs] 116918K->70639K(498112K), [Perm : 45055K->44963K(45056K)], 0.4554289 secs] [Times: user=0.45 sys=0.00, real=0.46 secs]?
14.679: [Full GC 14.679: [Tenured: 70639K->72308K(262144K), 0.4009647 secs] 122313K->72308K(498112K), [Perm : 49151K->49151K(49152K)], 0.4010552 secs] [Times: user=0.38 sys=0.00, real=0.40 secs]?
?? ?从日志中分析可以看出:触发full gc的罪魁祸首是Perm,这个没有设置,所以继续优化!
?? ?第二次优化:-XX:PermSize=64m ?-XX:MaxPermSize=64m,把持久化的初始化大小和最大大小设置为一样。Full gc消失了,来了24次minor gc。
-Xmn128m
-Xms512m
-Xmx512m
-XX:PermSize=64m ?
-XX:MaxPermSize=64m
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails?
-Xloggc:gc.log
1 楼 bestxiaok 2010-09-12 面试问的是不是挺多的,等等吧! 2 楼 fantasy 2011-02-18 好文,学到的JVM和GC的知识终于得以运用了 呵呵 3 楼 xgj1988 2011-04-27 为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同
感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log
输入出的内容是:
0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]
这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?
4 楼 bestxiaok 2011-04-27 为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同
感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log
输入出的内容是:
0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]
这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?xgj1988 写道为什么我在eclipse.ini里面配置了 -Xloggc:d:\gc.log 的信息和你的不同
感觉我的信息好少,而且我也加了-verbose:gc
我的配置如下:
-showsplash
com.genuitec.myeclipse.product
--launcher.XXMaxPermSize
-vmargs
-Xms512m
-Xmx512m
-Duser.language=en
-XX:PermSize=64M
-XX:MaxPermSize=64M
-verbose:gc
-Xloggc:d:\eclipseSetup.log
输入出的内容是:
0.000: [GC 32256K->8553K(520256K), 0.0512999 secs]
1.422: [GC 40809K->17014K(520256K), 0.0653821 secs]
2.818: [GC 49270K->20493K(520256K), 0.0385799 secs]
4.124: [GC 52749K->23110K(520256K), 0.0347348 secs]
5.405: [GC 55366K->25459K(520256K), 0.0312760 secs]
7.144: [GC 57715K->29170K(520256K), 0.0319969 secs]
8.417: [GC 61426K->31353K(520256K), 0.0300393 secs]
9.880: [GC 63609K->36043K(520256K), 0.0470010 secs]
10.370: [GC 68285K->37646K(520256K), 0.0254765 secs]
11.312: [GC 69902K->52962K(520256K), 0.0735824 secs]
11.716: [GC 85218K->56060K(520256K), 0.0343752 secs]
这样我根本不知道当前的GC是执行的哪个,比如你的有GC 信息里面有个 DefNew,还知道是新生代 GC 造成的,但是我的怎么没这个信息呢?
可能是跟版本有关系吧,这个的目的就是为了快速的启动eclipse,别的其实没大关系的。