轉自:http://www.cfei.net/archives/445
eclipse啓動優化,終於不那麼卡了!
網上找了好多都是myEclipse的優化的,跟eclipse有點區別,找了很多方法還是不能讓這個eclipse(Version: Kepler Release)快起來,太費事了,終於給俺找到一個挺好用的方法,轉來的。
首先了解下JVM中幾個相關的概念:
Xms:最小堆大小
Xmx:最大堆大小
Xmn:年輕代堆大小
Xss:每個線程的堆大小
PermSize:初始持久代大小
MaxPermSize:最大持久代大小
一般Xms、Xmx設置相同,PermSize、MaxPermSize設置相同,這樣可以避免伸縮堆大小帶來的性能損耗。
首先eclipse安裝根目錄下打開eclipse.ini,加上配置:
1 2 3 |
|
目的是運行eclipse的時候可以打出詳細gc過程。
啓動eclipse,然後打開gc.log一看,哇塞啓動一次就做了幾十次GC,包括不少次Full GC,着手優化……
先解決Full GC的問題:
1 2 |
|
如上GC日誌可以看出,Full GC主要是針對Tenured、Perm區的GC,好那先調整Perm大小,指定充裕的持久代區域,eclipse.ini中加入:
1 2 |
|
再次啓動看gc.log,Full GC沒有了,但是還有很多次普通GC,說明還是需要進一步優化。
eclipse的初始堆大小分配得很小,因此不利於年輕代堆大小的分配,如果設置的年輕代堆大小Xmn大於最小堆大小Xms,eclipse將無法啓動。
因此,將Xms調整爲512m,重啓動後觀察GC大幅減少。
最後調整Xmn,年輕代堆大小,經過反覆比較後,發現設置“-Xmn256m”效果最優。
優化後的GC日誌:
1 2 |
|
在接近6秒的啓動時間內,eclipse總共只做了2次普通GC回收,怎麼樣效果明顯吧!
一般在不對eclipse進行相關設置的時候,使用eclipse總是會覺得啓動好慢,用起來好卡,其實只要對eclipse的相關參數進行一些配置,就會有很大的改善。
加快啓動速度
1.在eclipse啓動的時候,它總是會搜索讓其運行的jre,往往就是這個搜索過程讓eclipse啓動變慢了。(沒設置時,等2-3s出現進度條,設置後直接出現進度條)
只要在eclipse.ini中加入-vm的參數就可以了
2.取消所有啓動時要激活的插件(在用時激活也一樣)和其它的相關的在啓動時執行的操作。
3.關閉自動更新
減少jvm內存回收引起的eclipse卡的問題
這個主要是jvm在client模式,進行內存回收時,會停下所有的其它工作,帶回收完畢纔去執行其它任務,在這期間eclipse就卡住了。所以適當的增加jvm申請的內存大小來減少其回收的次數甚至不回收,就會是卡的現象有明顯改善。
主要通過以下的幾個jvm參數來設置堆內存的:
-Xmx512m | 最大總堆內存,一般設置爲物理內存的1/4 |
-Xms512m | 初始總堆內存,一般將它設置的和最大堆內存一樣大,這樣就不需要根據當前堆使用情況而調整堆的大小了 |
-Xmn192m | 年輕帶堆內存,sun官方推薦爲整個堆的3/8 |
堆內存的組成 | 總堆內存 = 年輕帶堆內存 + 年老帶堆內存 + 持久帶堆內存 |
年輕帶堆內存 | 對象剛創建出來時放在這裏 |
年老帶堆內存 | 對象在被真正會回收之前會先放在這裏 |
持久帶堆內存 | class文件,元數據等放在這裏 |
-XX:PermSize=128m | 持久帶堆的初始大小 |
-XX:MaxPermSize=128m | 持久帶堆的最大大小,eclipse默認爲256m。如果要編譯jdk這種,一定要把這個設的很大,因爲它的類太多了。 |
我的配置(2g內存的筆記本):
還有其它的相關參數可以看看下面的參考材料,很有啓發的:
-XX:+UseParallelGC 使用併發內存回收
-XX:+DisableExplicitGC 禁用System.gc()的顯示內存回收
eclipse相關設置來來減少卡的現象
1.關閉自動構建。在啓用時,每保存一下,eclipse就會自動爲我們構建整個項目,這樣對於大的項目來說,每次保存時都會造成很卡。其實自動構建完全沒有必要,只要保證在運行前構建一次就ok了,eclipse也會在運行前自動爲我們構建,所以關閉是最明智的選擇。