요즘 진행중인 프로젝트에서 서블릿을 만들 때 자바 대신 그루비를 사용한다. 헌데 코드가 조금 복잡해지면서
OutOfMemoryError: PermGen space

라는 오류가 자꾸 발생했다. 일단 저 오류가 뜨고나면 톰캣이 더이상 동작하지 않는 상태가 된다.

이 문제로 5일이나 삽질한 끝에 방금 전에 해결했다.

여러가지 해결 책이 있겠지만, 일단 가장 쉬운 방법은 WEB-INF/lib 에서 mysql*.jar 를 삭제하는 것이다. 더불어 commons-logging*.jar도 삭제하자. 그러면 문제도 해결되고 애플리케이션 속도도 빨라진다.

그래도 해결이 안되고 계속 문제가 발생하면, 톰캣 실행옵션에
-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled

을 줘보자. 또는 -XX:MaxPermSize=256m도 효과가 있다고 한다. 나는 일단 jar파일들 삭제까지만 해서 문제가 해결되었다.
  1. karazhan 2009/03/27 13:22 답글수정삭제

    아 그런데 두 파일을 삭제하면 잘 작동하는 이유가 뭔지 알아내셨나요? ㅎㅎ
    책 보다 홈피 들어왔습니다~

    • 박제권 2009/11/23 05:31 수정삭제

      뒤져보고 싶은 마음도 들지만, 요즘은 귀차니즘이 저를 지배하고 있어요... ㅜㅜ

      아마도, 양쪽에 JAR가 있는 경우에 클래스로더가 무언가 처리를 잘 못하는구나, 하고 상상만하고 넘어갔습니다.

트랙백 주소 :: http://groovy.pe.kr/21/trackback/
옵션
댓글 달기