쓰레드풀에서 생기는 메모리 릭 분석을 하다보니 또 포스팅하게 되었다.

생각해보면 학부 이후 Java 개발을 시작한 2008년도부터 늘 걱정되는 부분이다. JVM 덕분에 메모리 관리를 하지 않아도 되서 자바가 편하지만, 반대로 메모리 문제가 생기면 정말 짜증나게 하는 것이 또 자바이다.


 가끔은 내가 왜 C/C++만을 하지 않았을까 하는 후회가 들 때도 있다. C/C++을 이용하여 Visual Studio에서 개발하는 것이 그립기도 하고 순수 MFC 개발자가 부러울 때가 종종 있다. 잡설은 집어치우겠다..



메모리 릭 현상을 분석하다가 로그의 한계가 드러났다.

자세하게 분석을 해봐야겠다고 판단하였고 다시 한번 Eclipse MAT(http://www.eclipse.org/mat/)을 사용해봐야겠다고 판단되었다. Eclipse MAT은 Java Head Dump의 분석 툴로서 무료 소프트웨어 중에서는 제일 좋다고 여겨진다. 아쉽게도 잘 나와있는 설명서를 찾을 수가 없어서 사용해보면서 종종 익히는 중이다.


Eclipse MAT을 처음 사용해 본 것은 안드로이드 앱을 개발할 당시에 죽는 문제를 해결하기 위해서였다. 웹에서도 쓰이는지 몰랐는데, 톰캣의 Head Dump를 떠서 분석을 할 수 있었다.


[1]을 참고해서 톰캣에 Head Dump를 생성하였다.


Tomcat Memory Dump 생성 명령어

jmap -dump:format=b,file=파일명 톰캣PID


Tomcat PID 분석법

1. jps-v

2. tasklist /FI "WINDOWTITLE eq Tomcat"



[그림1. Tomcat PID 확인법]



[그림2. Tomcat Memory Dump 생성]



Memory Dump파일을 생성했다면, 그 이후로는 Eclipse MAT을 실행시켜서 덤프 파일을 분석하면 된다.



[그림3. Eclipse MAT에서 Memory Dump 파일 분석]






Reference

[1] RayG (http://rayg.tistory.com/49)




Leave a Comment


to Top