2015年2月13日 星期五

[eclipse]記憶體不足的改善方法 OutOfMemoryErrors

有時候再開啟大檔案,或執行大的程式動作時,常會發生 OoutOfMemoryError 的問題,解決方法有兩種。
參照官網的解決方式:
FAQ How do I increase the heap size available to Eclipse?
這邊簡單說明,一個就是設定 eclipse 的啟動參數,在 windows 系統的畫,就是更改啟動的捷徑參數為:
eclipse [normal arguments] -vmargs -Xmx256M [more VM args]
小弟這邊是設定為:
eclipse.exe -vmargs -Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M -XX:+UseParallelGC 
接著之後都用這個捷徑去開啟 eclipse 即可。
另一種設定方式為 修改 eclipse.ini 的值,檔案位於 eclipse 的安裝目錄下。
官網的範例為:
-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M
基本上兩種方式都可以,小弟最後是選擇第二種方式,因為平常不是很常同時開啟多個 eclipse。

參照資料:

FAQ How do I increase the heap size available to Eclipse?

[Android]Eclipse 記憶體不足

eclipse記憶體溢出的解決方法

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

其他

同時啟動兩個以上 eclipse

各個專案自己使用自己的 eclipse 與 jdk 與 workspace 環境

建立一個目錄 => 將 eclipse / jdk / workspace 放入,啟動捷徑範例:

D:/xxxxxxxx/xxxxxxx/xxxxxxx/eclipse.exe  -data ../workspace -vm ../jdk/1.6.0_26/bin

可以個別設定自己的 eclipse.ini,省去參數太長的困擾
筆者建立一個 start.bat 每次只要點一下就可以了,分享一下:

@Echo Off
start eclipse.exe -d workspace -vm jdk1.8.0_25/bin -vmargs -Xms256M -Xmx1024M -XX:PermSize=64M -XX:MaxPermSize=128M -XX:+UseParallelGC
@EXIT


eclipse 啟動參數

啟動參數
-arch [processor architecture]描述:指定所使用的處理器的類別
舉例:eclipse -arch x86或eclipse -arch sparc

-application [id]
描述:指定要運行的應用,id為擴展org.eclipse.core.applications擴展點的外掛程式id加擴展id
舉例:例如有個外掛程式id為edu.sdu.app,擴展id為myapp,則eclipse -application edu.sdu.app.myapp,就會執行你的擴展應用

-clean
描述:清空外掛程式緩存內容
舉例:eclipse -clean,有時外掛程式顯示不出來是因為Eclipse將外掛程式進行了緩存以加速啟動過程,若指定此參數則會清空緩存,從頭載入

-configuration [cofigfile location]
描述:指定設定檔的位置,在啟動時使用此目錄下的設定檔config.ini來啟動
舉例:eclipse -configuration d:/eclipse/configuration

-data [workspace location]
描述:指定啟動時的Workspace位置
舉例:例如Workspace位置設在D:/myworkspace,則eclipse -data D:/myworkspace

-debug [option file]
描述:以Debug狀態啟動Eclipse,所有的Debug開關在.options檔中指定
舉例:eclipse -debug d:/eclipse/.options

-dev [classpath entry]
描述:以開發狀態啟動Eclipse,這會添加所有指定的路徑作為每個外掛程式的Classpath
舉例:例如eclipse -dev bin,會將產生在bin目錄下的所有類載入到類路徑中,這在開發外掛程式時非常有用

-nosplash
描述:指定啟動時不顯示閃屏
舉例:eclipse -nosplash

-vm [jre path]
描述:指定啟動時所使用的Java虛擬機器
舉例:例如要使用自己的Java虛擬機器,則eclipse -vm D:/j2sdk1.4.2_04/jre/bin/java.exe,這樣還有一個好處,就是可以開啟一個Console,能夠顯示控制台資訊,當然若使用eclipse -vm D:/j2sdk1.4.2_04/jre/bin/javaw.exe則不會再顯示控制台

-vmargs [Java VM arguments]描述:指定啟動時要使用的Java虛擬機器參數
舉例:例如要指定使用的記憶體容量,則eclipse -vmargs "-Xms256m -Xmx1024m"
注:此參數一定要放在所有參數變數的最後面

如果你覺得你的Eclipse在啟動的時候很慢(比如說超過20秒鐘),也許你要調整一下你的Eclipse啟動參數了。

小技巧:

1. 檢查啟動Eclipse的JVM設置。 在Help\About Eclipse SDK\Configuration Detail裡面,你可以看到啟動Eclipse的JVM。 這個JVM和你在Eclipse中設置的Installed JDK是兩回事情。如果啟動Eclipse的JVM還是JDK 1.4的話,那最好改為JDK 5,因為JDK 5的性能比1.4更好:
C:\eclipse\eclipse.exe -vm "C:\Program Files\Java\jdk1.5.0_08\ bin\javaw.exe"

2. 檢查Eclipse所使用的heap的大小。 在C:\eclipse目錄下有一個設定檔eclipse.ini,其中配置了Eclipse啟動的預設heap大小
-vmargs
-Xms40M
-Xmx256M

所以你可以把預設值改為:
-vmargs
-Xms256M
-Xmx512M

當然,也可以這樣做,把堆的大小改為256 - 512:
C:\eclipse\eclipse.exe -vm "C:\Program Files\Java\jdk1.5.0_08\ bin\javaw.exe" -vmargs -Xms256M -Xmx512M

3. 其他的啟動參數。 如果你有一個雙核的CPU,也許可以嘗試這個參數:
-XX:+UseParallelGC
讓GC可以更快的執行。(只是JDK 5裡對GC新增加的參數)

沒有留言 :

張貼留言