Eclipse调优

实验环境:java

Windows 10bash

JVM: Java HotSpot(TM) 64-Bit Server VM (24.79-b02, mixed mode)app

Java: 版本 1.7.0_79eclipse

eclipse-java-luna-SR2-win32-x86_64性能

 

eclipse.ini 的初始配置优化

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
# 永久代最大为 256m
--launcher.XXMaxPermSize    
256m
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Dosgi.requiredJavaVersion=1.6
# 堆初始大小为 40m
-Xms40m    
# 堆最大为 512m
-Xmx512m

 

类加载, 卸载信息ui

jps -l
13444 sun.tools.jps.Jps
12736    # eclipse 的 pid

jstat -class 12736
Loaded  Bytes  Unloaded  Bytes     Time
9541 20660.6        0     0.0       9.20

 

一. 类加载时间的优化

    添加 -Xverify:none 参数, 取消字节码验证, 能够加快 eclipse 的类加载速度spa

jps -l
13508 sun.tools.jps.Jps
10788    # eclipse 的 pid

jstat -class 10788
Loaded  Bytes  Unloaded  Bytes     Time
8514 18405.0        0     0.0       6.78

取消字节码验证后, eclipse 的类加载速度快了 2 秒多.net

 

二. 调整内存, 控制 GC 频率

    监视 eclipse 堆 ( Heap ), 永久代 ( PermGen ), 以及 GC 信息code

jps -l
1508 sun.tools.jps.Jps
10788    # eclipse 的 pid

jstat -class 10788
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
0.00   0.00  11.71  45.01  62.91      9    0.186     3    1.005    1.191

 

新生代 ( E, Eden ) 使用了 11.71% 的空间, 老年代 ( O, Old ) 使用了 45.01% 的空间, 

两个 Survivor ( S0, S1 ) 都为空, 永久代 ( P, PermGen ) 使用了 62.91%;

新生代共发生 9 次 YGC ( YoungGC ), 用时 0.186 秒, 老年代共发生 3 次 FGC ( FullGC ), 用时1.005 秒, GC 总耗时 ( GCT ) 1.191 秒

 

FGC ( FullGC )大多数由老年代容量扩增致使.

为了不老年代容量扩增引发的 FGC 带来的性能浪费

能够把 -Xms 参数适当设大一些,

若是内存够大的话, 也能够把 -Xms 设置和 -Xmm 同样

 

避免永久代容量扩增带来的性能浪费

能够把  -XX:PermSize 参数适当设大一些

若是内存够大的话, 能够把 -XX:PermSize 设置和 -XX:MaxPermSize 同样

 

内存调整后的配置

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Xverify:none
-Dosgi.requiredJavaVersion=1.6
# 堆初始大小为 256m
-Xms256m	
# 堆最大为 512m
-Xmx512m	
# 永久代初始大小为 64m
-XX:PermSize=64m	
# 永久代最大为 128m
-XX:MaxPermSize=128m

 

监视 eclipse 堆 ( Heap ), 永久代 ( PermGen ), 以及 GC 信息

jstat -gcutil 13888
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
0.00  99.82  46.14  33.99  99.37      3    0.147     0    0.000    0.147

 

调整内存后, YGC 只有 3次, 0次 FGC, GC 总耗时 0.147秒

 

三. 使用 JDK1.8

    JDK1.8 中, 元空间 ( Metaspace ) 取代了 永久代 ( PermGen ), 不会出现永久代内存溢出OutOfMemoryError: PermGen space, Metaspace 容量只受可用的本地内存限制, 会在运行时根据须要动态调整

 

最终优化配置

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs
-Xverify:none
-Dosgi.requiredJavaVersion=1.6
# 堆初始大小为 256m
-Xms256m	
# 堆最大为 512m
-Xmx512m	
# 永久代初始大小为 64m
-XX:PermSize=64m	
# 永久代最大为 128m
-XX:MaxPermSize=128m
相关文章
相关标签/搜索