[Eclipse+웹 어플리케이션 개발] java.lang.OutOfMemoryError: PermGen space


 OS - Mac
 Java - mac 기본, 1.6
 Spring, Ibatis, Mysql 5.5, Apache Tomcat 7

java.lang.OutOfMemeoryError: PermGen space

spring으로 간단한 로그인 기능 만들고 있는데 이런 에러가 발생하였다. 대충 봐도 메모리 쪽인 것같은데 역시나
permgen space는 JVM에서 관리하는 영역중 하나로 프로그램이 끝날때까지 영역을 차지 한다고 한다. 이부분은 좀더 찾아봐야 할 듯 하다. 

발생 원인
- 나의 경우 로그인 실패시 redirect하지 않고 forward시켜 loginForm 페이지에 오류 메시지를 보이려 했었고, 
  지속적으로 새로고침을 해버린 결과 저런 에러가 발생하였다. 
  발생 후 톰캣을 재 실행 하고 나니 잘 작동~!

해결 방법
1. 톰켓 설치가 된 디렉토리에 가서 bin밑에 있는 catalina.bat, catalina.sh에 JAVA_OPTS를 추가한다.

JAVA_OPTS="-Xms1024m -Xmx10246m -XX:NewSize=256m -XX:MaxNewSize=356m -XX:PermSize=256m -XX:MaxPermSize=356m"

*단 윈도우에서는 set JAVA_OPTS , 리눅스 환경에서는 export JAVA_OPTS
*자신이 원하는 만큼 늘려주면 될듯 하다
    그 후 톰캣 재 시동

2. 톰캣 conf/web.xml파일에 servlet안에 추가 하도록 한다.

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


3. 이클립스에서 수정하기

Window - Preferences - Java - Installed Jres - jre클릭  Edit
Default VM arguments에 -XX:MaxPermSize=원하는만큼 추가

eclipse.ini파일에서 수정해도 된다.

참고 링크
http://javarevisited.blogspot.kr/2012/01/tomcat-javalangoutofmemoryerror-permgen.html
http://mainia.tistory.com/171
http://mindasom.tistory.com/entry/Java-javalangOutOfMemoryError-PermGen-space

댓글

이 블로그의 인기 게시물

블로그 이전 작업 및 블로깅 할 목록 정리

[Spring Framework] Redirect +a 궁금증! ver_0.1

Phoenix 라이브러리 - ERROR 2008 (INT10): Unable to find cached index metadata 발생 시