java.lang.OutOfMemoryError 에러 처리방법

톰캣구동시 heap 이 작아서 객체를 더이상 담을 수 없을때 java.lang.OutOfMemoryError  오류가 발생됩니다. 결론은 작은 메모리를 늘려주거나 소스상의 객체를 정리?해서 처리를 해야 되는데 메모리를 늘리는 방법으로 설명을 드리도록 하죠.

 

무거운 어플리케이션을 처리할 때 톰캣이든 웹로직이든 자주보이는 에러메세지가 PermGen space 어쩌고 하면서 나오는 메세지일 겁니다.

 

예를 들자면, 특히 로컬에서 전자정부프레임워크같은 무거운 어플리케이션을 가동할때 사양이 낮은 컴퓨터에서 주로 가동이 메우 느릴 뿐더러 메모리나 구동시간이 느려서 먹통이 자주 되기도 합니다.

 

커맨드라인으로 톰캣을 실행시 아래 파라미터를 추가해줍니다.

-Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m

 

 

톰캣모니터로 실행을 시킨다면  Tomcat -> Java -> Java Options 에서 내용을 추가해주세요.

-Xmx512m -Xms512m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=128m


참고1: 공백이 추가되면 톰캣이 구동이 안됩니다.

참고2: 64비트버전이라면 레지스트리를 변경해주세요.

 

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat5\Parameters\JavaJVM

 

리눅스나 유닉스 환경에서는 catalina.sh 파일의 상단에 아래문구를 추가해주세요.

JAVA_OPTS="-Djava.awt.headless=true -server -Xms512m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:+DisableExplicitGC"

 

 

메모리 누수 해결방법입니다.

 

conf/web.xml 파일의 서블릿 부분에 아래 내용을 추가해주세요.

 

<init-param>
  <param-name>enablePooling</param-name>
  <param-value>false</param-value>
</init-param>

 

영어로된 사이트지만 천천히 살펴보면 어렵지는 않습니다^^

 

원본출처