2007~2011/Tools2008. 5. 27. 22:40

Detecting and analyzing memory leaks

커널 메모리 Paged Pool, Non-paged Pool의 사용량을 Tag로 모니터링 할 수 있는 도구입니다. 메모리 누수를 찾아내기 위해 유용하게 사용되는 Memory Pool Monitor (poolmon) 를 소개합니다.
poolmon.exe 실행 파일은 Windows 2000 Support Tools 에 포함되어 있습니다. 

Paged Pool 또는 Non Paged Pool 사용량이 많을 때 어떤 녀석이 많이 사용하는지 간단히 확인하고자 할 때 유용하게 사용할 수 있습니다. 물론 아래 그림에서 볼 수 있듯이 Tag로 나타납니다. Tag  의미는 또 다른 검색이 필요합니다. ^^;

Poolmon.exe에는 출력을 정렬하는 몇 가지 명령 키도 있습니다. 아래에서 설명하는 문자를 눌러 작업을 수행합니다. 각 명령이 작동하는 데 몇 초 정도 걸립니다. 다음은 몇 가지 명령 목록입니다.

P - 태그 목록을 페이징, 비페이징 또는 혼합 순으로 정렬합니다. P 키를 누르면 각 옵션이 순환됩니다.
B - 최대 바이트 사용 순으로 태그를 정렬합니다.
M - 최대 바이트 할당 순으로 태그를 정렬합니다.
T - 영문 태그 이름 순으로 태그를 정렬합니다.
E - 페이징, 비페이징 합계를 맨 아래에 표시합니다. 순환합니다.
A - 할당 크기 순으로 태그를 정렬합니다.
F - "frees" 순으로 태그를 정렬합니다.
S - allocs와 frees의 차이 순으로 태그를 정렬합니다.
E - 페이징, 비페이징 합계를 맨 아래에 표시합니다. 순환합니다.
Q - 종료합니다.



[실행화면]

 1. Poolmon.exe
 2. P 2회 - (nonpaged -> paged 정렬)
 3. B - 최대 바이트 사용 순으로 정렬

사용자 삽입 이미지


위의 그림에서 볼 수 있듯이 TAG명 Gcac(GDI glyph cache) 라는 녀석이 현재 시스템에서 가장 많은 Paged Pool을 사용하고 있음을 확인할 수 있습니다.


[참고자료]
메모리 풀 모니터(Poolmon.exe)를 사용하여 커널 모드 메모리 누수 문제를 해결하는 방법
http://support.microsoft.com/kb/177415/ko


작성자 : Lai Go / 작성일자 : 2008.05.27

Posted by Lai Go