-Xmx를 아무리 늘려도 Out Of Memory가 발생해요.. 그렇다면 MaxPermSize를~ 프로그래밍

How do you determine a good MaxPermSize?에서 Matt 가 OOM(OutOfMemory) 에러에 시달리는데, -Xmx 사이즈를 아무리 늘려도 해결이 안됐었나 보다.

설명에 의하면 클래스의 메타 정보는 -Xmx 로 지정되는 메모리 영역이 아닌 MaxPermSize로 지정되는 메모리 영역에 들어간다고 한다.

헌데, 요즘, Spring, iBatis, Hibernate 같은 리플렉션을 이용해서 클래스 메타 정보를 가져다 쓰는 프레임워크들이 많아지면서, MaxPermSize 를 기본값으로 놓고 사용하면 메모리가 부족해지는 현상이 일어나나 보다(나는 아직 겪어보지 못했다).
-XX:PermSize=64m -XX:MaxPermSize=256m

위와 같이 MaxPermSize를 지정하면 된다.

근데, 댓글들을 읽어보면 256m 은 좀 오바인것 같고, OOM 오류가 발생하면 테스트를 해가면서 세팅해야 할 것 같다.

기본 값은 JVM이 -client 옵션의 경우에는 32m -server 옵션일 경우에는 64m 이라고 한다.

또한, MaxPermSize는 -Xmx 로 지정한 메모리 용량과 별도로 할당된다. 즉, -Xmx가 256m 이고, -XX:MaxPermSize가 256m 이라면, 최대 512m이 할당될 수 있다는 것이다.

MaxPermSize and how it relates to the overall heap에 MaxPermSize에 대한 더 자세한 내용이 있다.
JAVA(J2SE 1.4.1) 메모리 영역 구조도 함 읽어보자.

핑백

  • links for 2011-04-22 » 한번 날렸다;;; 2011-04-23 09:15:38 #

    ... mSize=256m (tags: server tomcat was web application servlet container) 까먹지말자! : -Xmx를 아무리 늘려도 Out Of Memory가 발생해요.. 그렇다면 MaxPermSize를~ (tags: permsize xmx java) JAVA(J2SE 1.4.1) 메모리 영역 구.. :: 네이버블로그 (t ... more

  • tomcat의 out of memory 오류를 막기 | Andromeda Rabbit 2013-05-18 15:10:54 #

    ... at/bin/catalina.sh 파일을 열고 맨 위에 이 코드를 넣으면 끝! 참고 문헌 Java -Xmx Memory Settings -Xmx를 아무리 늘려도 Out Of Memory가 발생해요.. 그렇다면 MaxPermSize를~ [Tomcat] out of memory 발생시 처리 방법 Linux This work, unless otherwise expr ... more