2010年7月17日 星期六

Eclipse Galileo SR2無法開啟(二):跳出Problem Occurred視窗,關於PermGen space

環境狀況:eclipse中加入兩個tomcat時,且只有一個start,另一個stop,會跳出如下圖的錯誤視窗,.log檔會記載著java.lang.OutOfMemoryError: PermGen space 的錯誤訊息。

必須修正一下Eclipse Home下的eclipse.ini這個檔案。(Eclipse Home:存放Eclipse的路徑)




這是Eclipse最初的eclipse.ini
------------------------------------------------------

  1. -startup

  2. plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar

  3. --launcher.library

  4. plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

  5. -product

  6. org.eclipse.epp.package.jee.product

  7. --launcher.XXMaxPermSize

  8. 256M

  9. -showsplash

  10. org.eclipse.platform

  11. --launcher.XXMaxPermSize

  12. 256m

  13. -vmargs

  14. -Dosgi.requiredJavaVersion=1.5

  15. -Xms40m

  16. -Xmx512m
------------------------------------------------------
一、首先將第7、8、11、12移除。
二、在最後面加入下列兩行。
    -XX:PermSize=???m
    -XX:MaxPermSize=???m
???處請自行填入記憶體大小。(可以連同第15、16行的數字作修改)
save後,重開eclipse即可正常操作了,如果開啟eclipse還會跳出錯誤視窗,請調整記憶體大小。

這是目前我設置的記憶體大小(本環境實際安裝的記憶體為3GB):
-Xms48m
-Xmx768m
-XX:PermSize=64m
-XX:MaxPermSize=256m

=====================================================
牢騷記:
網路上找到的都是要去修改tomcat的設定檔,但是用下command的方式啟動tomcat時是正常的,所以並不是tomcat的問題。最後找到的方法就是在eclipse.ini裡面設定PermGen的大小。

※什麼是PermGen space?
PermGen space的全稱是Permanent Generation space,是指記憶體的永久保存區域,這塊記憶體主要是被JVM存放Class和Meta資訊的,Class在被Loader時就會被放到PermGen space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的應用中有很多CLASS的話,就很可能出現PermGen space錯誤,這種錯誤常見在web伺服器對JSP進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)那麼就會產生此錯誤資訊了。

沒有留言:

<%-- = = = = = = = = = = = = = = = = = 以上 = = = = = = = = = = = = = = = = = --%>

高雄聚會餐館

ボードゲーム予定

ボードゲーム持っている

<%-- = = = = = = = = = = = = = = = = 以下空白 = = = = = = = = = = = = = = = = --%>