1. 程式人生 > >tomcat 內存溢出問題(OutOfMemoryError: PermGen space)

tomcat 內存溢出問題(OutOfMemoryError: PermGen space)

using 記錄 err 導致 主程 perm 相關 web服務 大致

導入公司項目的時候出現的問題,在此記錄處理方法。

tomcat在啟動的時候報錯:OutOfMemoryError: PermGen space

PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。這一部分用於存放Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和和存放Instance的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器 對JSP進行pre compile的時候。但目前的hibernate和spring項目中也很容易出現這樣的問題。可能是由於這些框架會動態class,而且jvm的gc是不會清理PemGen space的,導致內存溢出。

網上查找了解決方法:大致有一下三種(我是用了第三種才解決的):

第一種:tomcat的內存不足那就加大它。

    

1. 手動設置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.bat(Linux下為catalina.sh),在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128M -XX:MaxPermSize=512m

catalina.sh下為:
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128M -XX:MaxPermSize=512m"

第二種:修改myeclipse 安裝目錄下的myeclipse.ini文件

(這種方法做記錄,好像沒有什麽用的)

第三種:修改myeclipse中的相關參數

依下圖:在Run中找到Run Configurations設置

技術分享

最後再加一種方案:

在 Optional Java VM arguments中設置:

技術分享

tomcat 內存溢出問題(OutOfMemoryError: PermGen space)