JVM 옵션 중 PermSize 관련

요즘 갑자기 JVM에서 OutOfMemoryError: PermGen space 에러가 자주 발생한다.
Heap 메모리가 부족하여 발생하는 줄 알고 -Xmx 옵션으로 늘려도 똑같이 발생한다.
원인은 PermSize 옵션 때문 ...
PermSize는 JVM에서 사용하는 메타데이터에 대한 정보(즉 영구적으로 사용하는)에 대한 저장공간이다. 대표적인 예가 리플렉션에서 사용하는 클래스에 대한 정보들이다.
최근에 와서야 이런 오류가 자주 발생하는 이유는 Spring 프레임워크를 사용하기 때문이다. Spring 프레임워크에서는 AOP, DI 들을 지원하기 위해 많ㅇ느 리플렉션 기능을 사용하고 Proxy를 이용하여 runtime에 클래스를 만들어 사용한다. 따라서 기존 방식에 비해 많은 메타데이터 저장공간이 필요하게 되었던 것이다.

옵션 설정은 다음과 같이 한다.

java .... -XX:PermSize=128m -XX:MaxPermSize=256m

이렇게 조정한 뒤 서버 restart 했는데 문제가 해결되었는지에 대한 여부는 몇일 운영해봐야 알 것 같다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준


Trackback URL : http://www.jaso.co.kr/trackback/162

Comments List

  1. 최종욱 2007/05/10 19:53 # M/D Reply Permalink

    스프링, 좋다 좋다 하는데... 뭔가 대책없는(? ) 프레임워크... -_-;

Leave a comment
« Previous : 1 : ... 259 : 260 : 261 : 262 : 263 : 264 : 265 : 266 : 267 : ... 388 : Next »