쓰레드풀에서 생기는 메모리 릭 분석을 하다보니 또 포스팅하게 되었다.
생각해보면 학부 이후 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)
'Devlopment > Java' 카테고리의 다른 글
Java Network Framework, Netty (0) | 2013.04.23 |
---|---|
JBoss 설치 및 연동 (0) | 2013.04.19 |
Mavn 및 플러그인 설치 (0) | 2013.04.19 |
Java 이전 버전을 받을 수 있는 URL (0) | 2013.03.28 |
Java 실행 (0) | 2013.01.31 |
Tomcat 및 Java ThreadPool에서 memory leak 현상 (3) | 2012.07.12 |
자바 기본 메소드의 구현 (0) | 2012.06.20 |
MyBatis NumberFormatException 문제 (0) | 2012.05.26 |
Java간의 통신 (1) | 2012.05.10 |
Netty서버에서 1024이상 받지 못하는 문제의 해결법 (0) | 2012.04.15 |