tomcat 內存溢出問題(OutOfMemoryError: PermGen space)
導入公司項目的時候出現的問題,在此記錄處理方法。
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)