1. 개요
 
 Out Of Memory 가 발생하여 heap memory 를 늘렸으나 동일하게 Out Of Memory 가 발생하였습니다.
 
해당 WAS 에서 사용중인 memory 를 확인해봐도 free 영역이 매우 많았습니다.
 
로그를 자세히 확인해본 결과 아래처럼 발생하고 있었습니다.
 
java.lang.OutOfMemoryError: PermGen space
PermGen 영역이 부족하여 Out Of Memory 가 발생하고 있어 heap memory 를 늘려도 효과가 없었던 것입니다.
 
 
 
2. PermGen 영역
 
PermGen 영역은 OS, jvm 버전마다 다른 default 값을 가지고 있지만 대부분 매우 작게 할당되어있습니다.
 
따라서 클래스 로딩을 많이 하다보면 PermGen 이 부족해질 수 있습니다.
 
운영하고 있는 시스템의 PermGen size 를 확인하시고, 운영에서 메모리가 어떤 방식으로 사용되는지를 gc log 를 통해 분석하신 후 PermGen 값을 정확하게 설정해주시는게 좋습니다.
 
 
 
3. 해결방법
 
아래 옵션을 추가해주시면 됩니다.
 
PermSize 는 PermGen min 값, MaxPermSize 는 PermGen max 값입니다. 운영하시는 시스템의 메모리를 분석하시고 메모리 값을 설정해주시면 됩니다.
 
-XX:PermSize=128m -XX:MaxPermSize=128m