1. 程式人生 > >MyEclipse中啟動出現java.lang.OutOfMemoryError: PermGen space有效解決方法

MyEclipse中啟動出現java.lang.OutOfMemoryError: PermGen space有效解決方法

原文連結:http://weiwuwen.iteye.com/blog/2207176

Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]";

java.lang.OutOfMemoryError:PermGen space
在網上查詢資料發現,這是MyEclipse記憶體不夠的原因。
       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)那麼就會產生此錯誤資訊了。
       網上大多數資料的解決方法基本上都是修改TOMCAT_HOME/bin/catalina.bat檔案的內容,具體修改方法下文會給出。很多人可能會發現,修改過catalina.bat檔案的內容,但是依舊會出現記憶體溢位這樣的錯誤。這是因為修改這個檔案只有在用批處理程式啟動Tomcat伺服器時才有效,如果啟動Tomcat是通過MyEclipse啟動伺服器的話,需要在MyEclipse裡面同樣設定記憶體大小。

      解決方法:

       一、手動設定MaxPermSize大小修改TOMCAT_HOME/bin/catalina.bat(windows系統)或者catalina.sh(unix系統)在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=256M -XX:MaxPermSize=512m

二、如果啟動Tomcat的時候是通過MyEclipse啟動伺服器的話,需要在MyEclipse裡面同樣設定記憶體大小

原圖上的文字:-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M

這個問題令我懊惱了不少時間,起初在百度查詢相關資料時,只是搜尋關鍵字錯誤資訊,發現很多文章提供的解決方法不夠全面都不能解決,後面在錯誤資訊前加上MyEclipse時(搜尋關鍵字:MyEclipse Caused by: java.lang.OutOfMemoryError: PermGen space)終於找到了可行的解決方案,這應該也算是一個查詢資料的小技巧吧。