본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


먼저 tomcat의 heap 변경을 위해서는 JVM 구조를 알아야 하고 기본적인 New, Old Generation 과 같은 개념을 알아야 한다. 블로그에 JVM에 대한 포스팅이 있으니 먼저 확인하고 읽길 바란다.


아래명령어로 자바 또는 톰캣의 프로세스 ID를 가져와야 한다.


1
2
ps -ef | grep java
ps -aux | grep tomcat



프로세스 아이디를 아래와 같이 입력하면 JVM 상태를 알 수 있다.


1
jmap -heap [pid]




만약 Old Generation의 사용량이 지속적으로 증가한다면 memory leak을 의심해봐야 한다.


New Generation, Old Generation으 비율은 기본 1:2이다. New, Old 비율은 업무 특성을 고려하여 적절하게 변경해야한다. 가급적 Old Generation으로 이동을 최소화하는 것이 좋기 때문에 New를 늘리는 방안을 생각할 수 있지만 그렇게 되면 역으로 Old의 부족으로 


아래 명령어로 클래스별 객체 수와 메모리 사용량을 확인할 수 있다.


1
jmap -histo:live [pid] | more




주기적으로 클래스별 객체 수와 메모리의 사용량을 체크하는지 알 수 있다. 하지만 어디에서 누스를 일으키는지는 jmap 만으로는 알 수 없고, heap dump를 떠서 분석해야 한다.