PermGen Space 的錯誤,導緻項目無法正常運作。
出現這個錯誤的原因,總結一下:
PermGen Space指的是記憶體的永久儲存區,該塊記憶體主要是被JVM存放class和mete資訊的,當class被加載loader的時候就會被存儲到該記憶體區中,與存放類的執行個體的heap區不同,java中的垃圾回收器GC不會在主程式運作期對PermGen space進行清理,是以當我們的應用中有很多的class時,很可能就會出現PermGen space的錯誤。
解決方法:
1. 手動設定MaxPermSize的大小
修改 TOMCAT_HOME/bin/catalina.bat(Linux上為catalina.sh)檔案,在echo "using CATALINA_BASE:$CATALINA_BASE"上面加入這一行内容:
set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=128m -XX:MaxPermSize=512m
catalina.sh修改如下:
JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128m -XX:MaxPermSize=512m
2.修改 TOMCAT_HOME/bin/catalina.bat檔案的内容:在 %_EXECJAVA% %JAVA_OPTS% 後面添加 -Xms=256m -Xmx512m 注意哦,前後後有空格的
例如: %_EXECJAVA% %JAVA_OPTS% -Xms=256m -Xmx512m(空格)後面的内容不變