程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> windows系統bat方式啟動tomcat出現java.lang.OutOfmemoryError:PermGen Space 錯誤

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

編輯:JAVA編程入門知識

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"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved