Eclipse性能调优
根据《深入理解Java虚拟机 JVM高级特性与最佳实践》调优自己的Eclipse。虽然我感觉10多秒的启动时间还可以,且用起来没什么卡顿,比我用Idea时的1分多钟启动时间,时不时卡顿强多了,但仍然想试试,看能优化到什么程度。之后也会对于Idea进行优化,做一下对比。
文章目录
1 调优前的程序运行状态
1.1 硬件参数
外星人笔记本,8核CPU。
1.2 虚拟机参数
下面的参数说明,默认启动使用的是server模式,C2编译器。按《深入理解Java虚拟机》的说法,-XX:+UseParallelGC参数使用的收集器是Parallel Scavenge+Serial Old(PS MarkSweep)。但根据下文的GC日志内容,估计java8使用的是Parallet Scavenge+Parallel Old收集器。
1.3 eclipse.ini
默认最小堆大小256M,最大堆大小1G。
-vm
C:/Program Files/Java/jdk1.8.0_45/bin/javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms256m
-Xmx1024m
-Dcom.sun.management.jmxremote
1.4 eclipse启动情况
《深入理解Java虚拟机》中写了个Eclipse插件来计算启动时间,我是用肉眼看的,所以会有一两秒的误差,粗略估计启动时间为16秒。
从下面的图可以看出:
最大堆容量经过了多次扩大;
JIT编译时间和类加载时间都比较多;
垃圾手机总耗时0.981秒,其中7次Mainor GC耗时0.215秒,4次Full GC耗时0.766秒。
1.5 GC日志
在eclipse.ini中添加虚拟机参数:-XX:+PrintGCTimeStamps、-XX:+PrintGCDetails、-Xloggc:gc.log以打印GC日志。
下面是运行启动4分多钟后的GC日志,可以看出触发GC的主要原因是新生代和元空间的初始空间不足,最后新生代需要150M以上的空间,元空间需要100M以上的空间。且主要集中在20秒前,之后很少发生GC。
Java HotSpot(TM) 64-Bit Server VM (25.45-b02) for windows-amd64 JRE (1.8