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
相關文章
相關標籤/搜索