1. 程式人生 > >eclipse啟動優化,終於不那麼卡了!

eclipse啟動優化,終於不那麼卡了!

轉自: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 -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails

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

啟動eclipse,然後開啟gc.log一看,哇塞啟動一次就做了幾十次GC,包括不少次Full GC,著手優化……

先解決Full GC的問題:

幫助
1 2 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中加入:

幫助
1 2 -XX:PermSize=128m -XX:MaxPermSize=128m

再次啟動看gc.log,Full GC沒有了,但是還有很多次普通GC,說明還是需要進一步優化。
eclipse的初始堆大小分配得很小,因此不利於年輕代堆大小的分配,如果設定的年輕代堆大小Xmn大於最小堆大小Xms,eclipse將無法啟動。
因此,將Xms調整為512m,重啟動後觀察GC大幅減少。
最後調整Xmn,年輕代堆大小,經過反覆比較後,發現設定“-Xmn256m”效果最優。
優化後的GC日誌:

幫助
1 2 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回收,怎麼樣效果明顯吧!
一般在不對eclipse進行相關設定的時候,使用eclipse總是會覺得啟動好慢,用起來好卡,其實只要對eclipse的相關引數進行一些配置,就會有很大的改善。
加快啟動速度
1.在eclipse啟動的時候,它總是會搜尋讓其執行的jre,往往就是這個搜尋過程讓eclipse啟動變慢了。(沒設定時,等2-3s出現進度條,設定後直接出現進度條)

只要在eclipse.ini中加入-vm的引數就可以了
eclipse啟動優化,終於不那麼卡了!-飛網

2.取消所有啟動時要啟用的外掛(在用時啟用也一樣)和其它的相關的在啟動時執行的操作。
eclipse啟動優化,終於不那麼卡了!-飛網

3.關閉自動更新
eclipse啟動優化,終於不那麼卡了!-飛網

減少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記憶體的筆記本):
eclipse啟動優化,終於不那麼卡了!-飛網
還有其它的相關引數可以看看下面的參考材料,很有啟發的:
-XX:+UseParallelGC 使用併發記憶體回收
-XX:+DisableExplicitGC 禁用System.gc()的顯示記憶體回收

eclipse相關設定來來減少卡的現象
1.關閉自動構建。在啟用時,每儲存一下,eclipse就會自動為我們構建整個專案,這樣對於大的專案來說,每次儲存時都會造成很卡。其實自動構建完全沒有必要,只要保證在執行前構建一次就ok了,eclipse也會在執行前自動為我們構建,所以關閉是最明智的選擇。
eclipse啟動優化,終於不那麼卡了!-飛網

2.關閉拼寫檢查設定
eclipse啟動優化,終於不那麼卡了!-飛網

參考材料
jvm啟動引數大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html
jvm結構的一些知識(其中的堆的構成):http://hllvm.group.iteye.com/group/wiki/2905-JVM
jvm堆知識:http://ruijf.iteye.com/blog/1028455
eclipse啟動調優:http://www.iteye.com/topic/756538
eclipse自帶的help contents(搜尋"Running Eclipse"可以找到啟動相關的配置)

本文轉自:

http://blog.csdn.net/tomato8524/article/details/7428742

http://blog.csdn.net/tomato8524/article/details/7428793

轉自: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 -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails

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

啟動eclipse,然後開啟gc.log一看,哇塞啟動一次就做了幾十次GC,包括不少次Full GC,著手優化……

先解決Full GC的問題:

幫助
1 2 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中加入:

幫助
1 2 -XX:PermSize=128m -XX:MaxPermSize=128m

再次啟動看gc.log,Full GC沒有了,但是還有很多次普通GC,說明還是需要進一步優化。
eclipse的初始堆大小分配得很小,因此不利於年輕代堆大小的分配,如果設定的年輕代堆大小Xmn大於最小堆大小Xms,eclipse將無法啟動。
因此,將Xms調整為512m,重啟動後觀察GC大幅減少。
最後調整Xmn,年輕代堆大小,經過反覆比較後,發現設定“-Xmn256m”效果最優。
優化後的GC日誌:

幫助
1 2 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回收,怎麼樣效果明顯吧!
一般在不對eclipse進行相關設定的時候,使用eclipse總是會覺得啟動好慢,用起來好卡,其實只要對eclipse的相關引數進行一些配置,就會有很大的改善。
加快啟動速度
1.在eclipse啟動的時候,它總是會搜尋讓其執行的jre,往往就是這個搜尋過程讓eclipse啟動變慢了。(沒設定時,等2-3s出現進度條,設定後直接出現進度條)

只要在eclipse.ini中加入-vm的引數就可以了
eclipse啟動優化,終於不那麼卡了!-飛網

2.取消所有啟動時要啟用的外掛(在用時啟用也一樣)和其它的相關的在啟動時執行的操作。
eclipse啟動優化,終於不那麼卡了!-飛網

3.關閉自動更新
eclipse啟動優化,終於不那麼卡了!-飛網

減少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記憶體的筆記本):
eclipse啟動優化,終於不那麼卡了!-飛網
還有其它的相關引數可以看看下面的參考材料,很有啟發的:
-XX:+UseParallelGC 使用併發記憶體回收
-XX:+DisableExplicitGC 禁用System.gc()的顯示記憶體回收

eclipse相關設定來來減少卡的現象
1.關閉自動構建。在啟用時,每儲存一下,eclipse就會自動為我們構建整個專案,這樣對於大的專案來說,每次儲存時都會造成很卡。其實自動構建完全沒有必要,只要保證在執行前構建一次就ok了,eclipse也會在執行前自動為我們構建,所以關閉是最明智的選擇。
eclipse啟動優化,終於不那麼卡了!-飛網

2.關閉拼寫檢查設定
eclipse啟動優化,終於不那麼卡了!-飛網

參考材料
jvm啟動引數大全:http://www.blogjava.net/midstr/archive/2008/09/21/230265.html
jvm結構的一些知識(其中的堆的構成):http://hllvm.group.iteye.com/group/wiki/2905-JVM
jvm堆知識:http://ruijf.iteye.com/blog/1028455
eclipse啟動調優:http://www.iteye.com/topic/756538
eclipse自帶的help contents(搜尋"Running Eclipse"可以找到啟動相關的配置)

本文轉自:

http://blog.csdn.net/tomato8524/article/details/7428742

http://blog.csdn.net/tomato8524/article/details/7428793