天天看點

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

最近,eclipse(eclipse-jee3.5)運作十分緩慢(可能插件安裝過多),是以,得到了個機會調優一下,以便提高工作效率

下圖是未經任何調整eclipse的gc情況(使用jvisualvm指令,安裝visual gc插件)

在終端輸入:jvisualvm運作後,工具->插件->visual gc,安裝。

啟動eclipse後,在終端運作: ps -ef | grep eclipse,然後在jvisualvm的應用程式一欄選擇eclipse pid的程式輕按兩下,即可到visual gc上檢視圖表。

-xms1024m

-xmx1024m

對應的為圖中的 old 區;

-xx:newsize=768m

-xx:maxnewsize=768m

對應的為圖中的 eden 區;

-xx:permsize=200m

-xx:maxpermsize=200m

對應的為圖中的 perm區;

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

從圖中可以看出,僅啟動過程就有38次young gc,11次full gc

為了檢視gc細節,在eclipse.ini中加入如下參數:

-verbose:gc

-xx:+printgcdetails

-xx:+printgcdatestamps

-xloggc:d:/soft/eclipse-jee/gc.log

gc的内容如下:

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

從gc日志中可以看出:

(1)young區開始為4928k,持續的不夠,是以造成不斷的young gc

(2)full gc時,old區的空間增大擴容,是以old區空間也不夠

為了防止這種情況發生,加入以下參數:

-xms768m

-xmx768m

-xx:newsize=512m

-xx:maxnewsize=512m

此次調整後結果如下圖:

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

從圖中可以看出,young gc沒有了,但為啥還11次full gc呢?

以下是此次gc的日志:

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

從gc.log中,可以看出,是因為perm區的沒有空間了,才導緻的full gc,于是将perm區增大并固定大小

加入以下參數:

-xx:permsize=96m

-xx:maxpermsize=96m

此次調整後結果如下:

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

可以看出,沒有full gc了,而且young gc隻有一次,有了一定的效果了

啟動時gc的問題解決了,現在來看其他問題:

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

從圖中可以看出,如果classloader加載class的時間能快些,應該也會節省些時間

-xverify:none(關閉java位元組碼驗證,進而加快了類裝入的速度)

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

将上兩圖比較

第一個:平均每個類的載入時間為,54.615/10950 = 0.0049876712328767s

第二個:平均每個類的載入時間為,34.498/9484 = 0.0036374947279629s

可以看出,多少是有一些性能上的提高的

考慮到eclipse長時間運作,其他可能調節的有以下幾點:

(1)關閉system.gc()

(2)提高eclipse中某些代碼的jit編譯

(3)優化垃圾收集器,以減少垃圾收集造成應用無響應的時間

對于(1),加入以下參數:

-xx:+disableexplicitgc

對于(2),會影響啟動速度,但由于eclipse是長時間運作,是以此優化是必要的:

-xx:compilethreshold=100(方法調用多少次就會被編譯成本地機器碼)

[轉]迄今為止最優的Eclipse運作性能調優 ,含eclipse.ini

可以看出,編譯方法的數量和時間明顯增加

對于(3),換用cms收集器應該比串行收集器要好,加入以下參數:

-xx:+useparnewgc

-xx:+useconcmarksweepgc

-xx:cmsinitiatingoccupancyfraction=80

至此,調優結束

總結一下加入的參數如下:

-xloggc:d:/soft/eclipse-jee-galileo-win32/eclipse/gc.log

-xms512m

-xmx512m

-xx:newsize=256m

-xx:maxnewsize=256m

-xx:compilethreshold=100

-xverify:none

<a href="http://blog.csdn.net/gtuu0123/article/details/6720253" target="_blank">http://blog.csdn.net/gtuu0123/article/details/6720253</a>

參考如上内容用的eclipse.ini:

1、小記憶體,運作情況不錯

-clean

-startup

plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

--launcher.library

plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20130807-1835

-product

org.eclipse.epp.package.cpp.product

--launcher.defaultaction

openfile

-showsplash

org.eclipse.platform

--launcher.xxmaxpermsize

256m

--launcher.appendvmargs

-vmargs

-dosgi.requiredjavaversion=1.6

2、大記憶體

-xms1600m

-xmx1600m

-xx:newsize=800m

-xx:maxnewsize=800m

-xx:permsize=256m

-xx:maxpermsize=256m

3、大記憶體,自己弄的,可能優化的不合理

-xms40m

-xmx2048m

-xss1024k

繼續閱讀