웹사이트 운영시 OOM(Out Of Memory)가 발생하여 tomcat이 정상동작을
하지 않는 경우가 있습니다. JVMheap 상태를 확인해 보시려면 jmap을 활용하여 점검하실 수 있습니다.
1. 실행 중인 tomcat 프로세스 id 확인을 위해 # jps 명령을 실행합니다.
Bootstrap의 id값이 tomcat 프로세스 id입니다.
2.# jmap -heap [pid]를 실행하여 JVM 상태를 확인합니다.
Heap 설정과 각 Generation 별 사용현황을 확인할 수 있으며,
만일 Old Generation의 사용량이 지속적으로 증가한다면 memory leak을의심할 수 있습니다.
3. -histo 옵션을 사용하면 조금 더 상세한 클래스별 객체 수와 메모리 사용량을 확인할 수 있습니다.
# jmap-histo:live [pid] | more
주기적으로 클래스별 객체 수와 메모리 사용량 등을 체크해 보면
어느 클래스에서 누수가 되는 것인지 대략적으로 알 수 있습니다만, 어느 부분에서 누수가 유발되는 것인지 자세한 부분은
jmap만으로는 알 수 없으며 heap dump를 받아 분석해야 합니다.