■ 관련 오류 메세지:
java.lang.OutOfMemoryError: PermGen space
■ 설치한 패키지:
mysql-5.5.28-winx64
jdk-7u9-windows-x64
apache-tomcat-7.0.32
■ UNIX (catalina.sh):
catalina.sh의 적당한 위치에 아래와 같은 JAVA_OPTS를 추가한다.
# for Java 7
JAVAOPTS="Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2048m -Xmx16384m -Xss1024k -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"
# for Java 8
JAVAOPTS="Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2048m -Xmx16384m -Xss1024k -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=256m"
■ 윈도우즈
regedit를 사용하여 아래 레지스트리를 찾아간다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tomcat7\ImagePath
값이 아래와 같이 되어 있을 경우
"C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7.exe" //RS//Tomcat7
//RS//Tomcat7 뒤에 공백을 하나 주고 아래를 추가해 준다.
++JvmOptions Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms512m -Xmx2048m -Xss1024k -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC
아래와 같이 된 것을 확인한 후
"C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7.exe" //RS//Tomcat7 ++JvmOptions -XX:PermSize=4096m -XX:MaxPermSize=4096m -XX:+DisableExplicitGC
apache tomcat을 재시작 한다.
■ 메모리 leak 현상을 막기 위해서 conf 아래의 web.xml에 내용에 추가
vi tomcat/conf/web.xml
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>enablePooling</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>