java.lang.OutOfMemoryErorr 발생했는데 Heap Monitor를 보면 200M 조차 사용하지 않았을 경우 대부분은 PermGen 영역이 모자란 것이 원인일 수 있다.


하지만 Java는 메모리 영역을 사실상 두 부분으로 구분하여 사용한다. 일반 Java Heap space와 클래스와 같이 Permenant Generation 대상 데이터를 두기 위한 PermGen space이다.

대부분의 자바 애플리케이션에서는 기본 PermGen Size로 충분하겠지만 경우에 따라 클래스가 꽤 많아지면서 모자란 경우가 있는듯 하다.


PermGen space는 -XX:MaxPermSize 옵션으로 설정할 수 있다.

java -vmargs -XX:MaxPermSize=128m -Xms128m -Xmx512m


OutOfMemory 에러가 발생한다면 -Xmx만 늘려주지말고 PermSize도 확인해보라.



참조 http://blog.eclipsercp.or.kr/javanese/?p=34