天天看點

Eclipse性能調優

Xms:最小堆大小

Xmx:最大堆大小

Xmn:年輕代堆大小

Xss:每個線程的堆大小

PermSize:初始持久代大小

MaxPermSize:最大持久代大小

一般Xms、Xmx設定相同,PermSize、MaxPermSize設定相同,這樣可以避免伸縮堆大小帶來的性能損耗。

首先eclipse安裝根目錄下打開eclipse.ini,加上配置:

-Xloggc:gc.log

-XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

目的是運作eclipse的時候可以打出詳細gc過程。

啟動eclipse,然後打開gc.log一看,哇塞啟動一次就做了幾十次GC(我的注釋:garbage collection 垃圾回收),包括不少次Full GC,着手優化……

先解決Full GC的問題:

……

3.159: [Full GC 3.159: [Tenured: 22716K->26133K(35780K), 0.1116536 secs] 38493K->26133K(51908K), [Perm : 20479K->20479K(20480K)], 0.1117614 secs] [Times: user=0.11 sys=0.00, real=0.11 secs] 

3.706: [Full GC 3.706: [Tenured: 26133K->27935K(43556K), 0.1235449 secs] 40042K->27935K(63204K), [Perm : 24575K->24575K(24576K)], 0.1236474 secs] [Times: user=0.13 sys=0.00, real=0.13 secs] 

如上GC日志可以看出,Full GC主要是針對Tenured、Perm區的GC,好那先調整Perm大小,指定充裕的持久代區域,eclipse.ini中加入:

-XX:PermSize=128m

-XX:MaxPermSize=128m

再次啟動看gc.log,Full GC沒有了,但是還有很多次普通GC,說明還是需要進一步優化。

eclipse的初始堆大小配置設定得很小,是以不利于年輕代堆大小的配置設定,如果設定的年輕代堆大小Xmn大于最小堆大小Xms,eclipse将無法啟動。

是以,将Xms調整為512m,重新開機動後觀察GC大幅減少。

最後調整Xmn,年輕代堆大小,經過反複比較後,發現設定“-Xmn256m”效果最優。

優化後的GC日志:

3.203: [GC 3.204: [DefNew: 209776K->26176K(235968K), 0.0876304 secs] 209776K->27184K(498112K), 0.0876921 secs] [Times: user=0.09 sys=0.00, real=0.09 secs] 

5.422: [GC 5.422: [DefNew: 235968K->12433K(235968K), 0.0989335 secs] 236976K->39296K(498112K), 0.0990229 secs]

在接近6秒的啟動時間内,eclipse總共隻做了2次普通GC回收(我的注釋:不一定是2次 好的話也可能一次都沒有),怎麼樣效果明顯吧!

繼續閱讀