2011年5月11日

效能設定微調改善 Eclipse 開發工具的執行速度

Eclipse對於開發Java EE或Android應用很好用,但執行起來慢吞吞,這是很讓人頭痛的地方。

讓Eclipse跑快一點,實體記憶體容量影響很大。32位元的作業系統,建議2GB以上,但太多沒意義,因為作業系統僅能使用3.xGB;64位元的作業系統,至少要有4G,但建議8GB以上。因為吃記憶體是Java軟體的共同特色,而在64位元環境下運作的Java軟體,通常會佔用比32位元更大量的記憶體,所以配置要更充裕。

Eclipse資料夾下的eclipse.ini,包含啟動Eclipse的JVM參數,可以參考以下粗體的部分,將設定微調部分補上。(微調有效的前提是實體記憶體充足,記憶體少得誇張的系統,例如只有512MB/1GB的老電腦,做這些調整的意義就不大了。)

-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize 
256m 
-vmargs
-Xverify:none 
-XX:PermSize=128M 
-Xms256m 
-Xmx512m
-XX:+UseParallelGC

其中標示藍色粗體的部分,是依據實際安裝的記憶體容量和作業系統類型調整,例如Xms256m代表最小配置256MB,所以Eclipse啟動時很快就會先佔用此大小的記憶體,隨後會成長到Xmx512m設定的512MB。Xmx和XXMaxPermSize不能太小,否則某項功能一下子吃掉太多記憶體,達到此最大限制後,就必須重新啟動應用程式了。

Xverify:none的設定是讓Eclipse的啟動速度快一些,略過Java類別載入時的驗證,以下是JVM文件的說明。
You can use -Xverify:none if you want to skip the class verification stage during class loading . Using -Xverify:none disables Java class verification, which can provide a 10-15% improvement in startup time. However corrupted or invalid class data is not detected when this option is specified. If corrupt class data is loaded, the Java Virtual Machine (JVM) might behave in an unexpected manner, or the JVM might fail.

Java程式的記憶體是自動管理,例如產生一個物件,會配置記憶體空間,但是刪除這個物件時,雖然用不到這塊記憶體,不過會一直等到記憶體回收機制認為有必要時,才會解放這塊記憶體。JVM參數XX:+UseParallelGC,可以設定另一種「平行」記憶體回收方式,設定後需要測試看看是否穩定。

Eclipse提供一些在背景執行的功能,自動幫我們維護開啟的專案程式碼,但這也是影響效能的部分因素。如果我們清楚哪些功能,可以用手動方式,只在必要時才做,就可已關閉這些自動功能。

關閉Build Automatically
上方選單 Project / Build Automatically 將這項「自動建置」打勾取消,這會讓Java類別的原始碼寫好之後,不會自動建置(即javac編譯)。關閉自動建置後,每次寫完一段程式碼,用Ctrl+B就可以完成編譯,並不會比較麻煩;在Project選單下的Build All即Build Project也是相同作用。

關閉Validation
打開上方選單 Window / Preferences / Validation 設定頁,把 Build 的打勾都取消,可以讓Eclipse不會對文件自動做檢查,例如XML、HTML的驗證。之後想要手動進行驗證,只要在已打開的文件用滑鼠右鍵選單的 Validate 即可。


關閉非必要的延伸功能(Plug-ins)
打開上方選單 Windows / Preferences / Startup and Shutdown 設定頁,將 Plug-ins activated on startup 列表中不必要的項目打勾都取消,讓 Eclipse 啟動時不會自動載入這些項目。

5 則留言:

  1. 請問一下,如果
    int a = 0;
    a = 1;
    那一般來說,不是把滑鼠移動到a上面,同樣的,其他的a也會一起有灰色的底色,因為是指同一個東西,結果我不知道弄了甚麼設定,現在我的Eclipse沒有這個功能,我有點頭痛,可以幫我這個忙??告訴我那要在哪裡設定回來><

    回覆刪除
  2. 請將這項設定打勾
    Window > Preferences > Java > Editor > Mark Occurrences...

    回覆刪除
  3. 有了有了,真的是超感謝的>.<

    這問題我問我附近的工程師都說沒遇過,所以都不知道解決的方法,真是太感謝你了~~

    回覆刪除
  4. 別客氣,有Java相關問題歡迎一起交流討論!

    回覆刪除
  5. 請問我如果關閉Validation那是不是一般compiler的除錯eclipse都不會做了呢??

    回覆刪除

lyhcode by lyhcode
歡迎轉載,請務必註明出處!