Tomcat發生java.lang.OutOfMemoryError: PermGen space的解決方案

位元流發表於2014-06-06
產生該問題的主要原因是JVM永久帶空間不足導致的,可以在環境變數CATALINA_OPTS中提高MaxPermSize引數值
 
set CATALINA_OPTS = -XX:PermSize=128m -XX:MaxPermSize=512m
 
如果是堆疊溢位的錯誤,則需要將xms的值提高
 
set CATALINA_OPTS = -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m
 
引數解釋:
-xms128:表示JVM初始堆疊大小
-xmx1024:表示JVM堆疊大小最大可以達到1M記憶體
-XX:PermSize=128m:表示初始永久帶記憶體大小
-XX:MaxPermSize=512m:表示永久帶最大記憶體大小
 
為什麼設定CATALINA_OPTS就會生效?
 
因為在tomcat啟動的時候會先帶上JAVA_OPTS,CATALINA_OPTS, DEBUG_OPTS環境變數設定的引數,我們檢視%CATALINA_HOME%/bin/catalina.bat檔案中就可以看出
 
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
 

相關文章