window系統bat方式啓動tomcat出現java.lang.OutOfmemoryError:PermGen Space 錯誤

1、問題:

在給客戶部署項目時,將兩個應用部署到同一個tomcat下,通過startup.bat啓動服務時,控制檯出現出現java.lang.OutOfmemoryError:PermGen Space 錯誤

服務器環境:

系統版本:windows server 2008 r2

安裝內存:64GB

處理器:8核(具體型號記不得了)

2、解決方法:

        PermGen Space:全稱是Permanent Generation Space,是指內存的永久保存區域,這塊內存主要是被JVM存放Class和Meta信息的,class在被load時就會被放到PermGen Space中,它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對PermGen Space進行清理,所以如果你的應用中有很多class的話,就很可能出現PermGen Space錯誤,這種錯誤常見在web服務器對jsp進行pre compile的時候。如果你的WEB APP下都用了大量的第三方jar, 其大小超過了jvm默認的大小(4M)就會出現該錯誤信息了。


經過實際驗證的解決辦法:修改catalina.bat文件內容,添加PermSize參數的設置,大小視具體情況而定:

修改前:

rem ----- Execute The Requested Command ---------------------------------------

set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF8" -Ddefault.client.encoding="UTF-8" -Duser.language=Zh
set JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m
修改後:

rem ----- Execute The Requested Command ---------------------------------------

set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF8" -Ddefault.client.encoding="UTF-8" -Duser.language=Zh
set JAVA_OPTS=%JAVA_OPTS% -server -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m

再次重啓tomccat,正常啓動。


下面是網絡上其他啓動方式和環境的解決方法,以備以後參考

1、eclipse開發環境

修改eclipse.ini文件

-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx512m
-XX:PermSize=64M 
-XX:MaxPermSize=128M

2、windows 服務方式啓動tomcat

修改註冊表

3、Linux系統

修改catalina.sh:

JAVA_OPTS="-Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m"


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章