톰켓 Permgen 메모리 설정하기
Thanks Mkyong!!
1. Solution
By default, Tomcat is assigned a very little PermGen memory for the running process. To fix it, increase the PermGen memory settings by using the following Java VM options.
-XX:PermSize<size> - Set initial PermGen Size. -XX:MaxPermSize<size> - Set the maximum PermGen Size.
2. Windows
Tomcat is managed by this script file catalina.bat
, dive inside the script, you will find out that catalina.bat
always find and run the setenv.bat
file to set the environment variables.
//... rem Get standard environment variables if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome call "%CATALINA_BASE%\bin\setenv.bat" goto setenvDone :checkSetenvHome if exist "%CATALINA_HOME%\bin\setenv.bat" call "%CATALINA_HOME%\bin\setenv.bat" :setenvDone //...
2.1 To set the environment variable on Windows, create a setenv.bat
manually, and put it into the ${tomcat-folder}\bin
folder.
set JAVA_OPTS=-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m
P.S No double quotes, set JAVA_OPTS={value}.
2.2 Restart Tomcat, it will call the setenv.bat
file to set the environment variable automatically.
{$tomcat-folder}\bin\catalina.bat restart
3. Linux
On Linux, the process is same, just Tomcat is using catalina.sh
and setenv.sh
instead.
3.1 Find out where is catalina.sh
:
$ sudo find / -name "catalina.sh" Password: find: /dev/fd/3: Not a directory find: /dev/fd/4: Not a directory /Users/mkyong/Downloads/apache-tomcat-6.0.35/bin/catalina.sh
3.2 Review the catalina.sh
, script, it behaves like Windows, but use setenv.sh
instead.
//... # Ensure that any user defined CLASSPATH variables are not used on startup, # but allow them to be specified in setenv.sh, in rare case when it is needed. CLASSPATH= if [ -r "$CATALINA_BASE/bin/setenv.sh" ]; then . "$CATALINA_BASE/bin/setenv.sh" elif [ -r "$CATALINA_HOME/bin/setenv.sh" ]; then . "$CATALINA_HOME/bin/setenv.sh" fi //...
3.3 Create a setenv.sh
manually, and put it into the ${tomcat-folder}\bin\
folder.
export JAVA_OPTS="-Dfile.encoding=UTF-8 -Xms128m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=256m"
P.S With double quotes, export JAVA_OPTS=”{value}”.
3.4 Restart Tomcat.
http://www.mkyong.com/tomcat/tomcat-javalangoutofmemoryerror-permgen-space/