1. Windows : catalina.bat

set CATALINA_OPTS=-Xms512m -Xmx512m

2. ksh/bash : catalina.sh
export CATALINA_OPTS="-Xms512m -Xmx512m"

3. tcsh/csh : catalina.sh
setenv CATALINA_OPTS="-Xms512m -Xmx512m"


Tomcat을 사용하다가 java application 실행 시
java.lang.OutOfMemoryError: Java heap space 에러 생겼을 때 해결방법.


생기는 경우의 수가 많이 있을 것 같지만, 이번에 아래의 스크립트로 해겼되었으므로 적어놔야 겠다.

----

이번 경우는 Confluence Wiki 설치 중, 어느 부분에서 페이지가 넘어가지 못하고 먹통이 되었다가 결국 아래의 에러가 발생했다. 

java.lang.OutOfMemoryError: Java heap space

Confluence Wiki와 같은 Java 어플리케이션은 JVM에서 구동된다. 따라서 시작 시 JVM에서 일정량의 메모리를 할당하여 어플리케이션에서 사용된다. 기본적으로 Java 가상머신은 서버에 얼마나 많은 물리적인 메모리가 설치되있더라도 오직 64MB의 메모리만을 할당된다고 한다.
따라서 Confluence Wiki같은 중간규모 이상의 어플리케이션은 늘리필요가 있다고 한다.

늘리는 방법을 찾느냐 조금 시간이 걸렸다.
Linux, Java, Tomcat에 능통한 사람이면 금방 찾을 수 있지만, 전혀 찾을 수 없었다.
그래서 여기저기 해결방법을 짜집기 하다가 힌트를 얻었고 스크립트를 작성하였다.

** tomcat 5.5 기준임 **

/usr/local/tomcat/bin 에 tomcat.sh를 하나 만들자. (/usr/local/ 는 사람마다 다를 수 있슴)

> cd  /usr/local/tomcat/bin
> vi tomcat5.sh

tomcat5.sh 파일내용

#!/bin/sh
# file:tomcat.sh
CLASSPATH=/usr/java/jdk1.5.0_15/lib
JAVA_HOME=/usr/java/jdk1.5.0_15
CATALINA_OPTS=-Djava.awt.headless=true
JAVA_OPTS=-Xms512m -Xmx512m

export CLASSPATH
export JAVA_HOME
export CATALINA_OPTS
export JAVA_OPTS

case "$1" in
start)
echo "Starting tomcat5..."
/usr/local/tomcat/bin/startup.sh
;;
stop)
echo "Stopping tomcat5..."
/usr/local/tomcat/bin/shutdown.sh
;;
*)
echo "Usage tomcat.sh start/stop"
exit 1;;
esac


tomcat 시작

> tomcat.sh stop
> tomcat.sh start 



flex 와 같은 어플리케이션을 로드 하는 경우에는 permSize 를 설정하는 것이 좋다.
Xms-> 최소 메모리값 , Xmx-> 최대 메모리값 , permSize-> Permanent generation  영역은 객체나, 함수가 차지하는 영역 이고 Xmx 로 설정하는 heap 메모리영역에 포함되지 않는다
export JAVA_OPTS="-Xms256m -Xmx1024m -XX:PermSize=64m -XX:MaxPermSize=128m"
 

Posted by 복태아빠
,