본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Android/안드로이드] MAT ( Mermory Analyzer Tool ) Android, Eclipse 사용 방법.

by 돼지왕 왕돼지 2012. 2. 24.
반응형


안녕하세요 돼지왕 왕돼지입니다.
오늘은 Eclipse 의 Plug-in 으로 존재하는 MAT ( Memory Analyzer Tool ) 에 대해 알아보겠습니다.
특히 이번장에는 Android 에서 MAT 사용하는 방법에 대해 알아보도록 하겠습니다.


MAT 소개

 
Eclipse Memory Analyzer 는 빠르고, 많은 기능을 제공하는 Java 힙 메모리 분석도구입니다. 이것으로 메모리 릭을 발견하거나, 분석을 통해 메모리 소비를 줄일 수 있습니다. MAT 을 사용하여 수천만의 object 들을 dump 시킬수도 있고, 남아있는 object 들의 용량도 계산할 수 있으며, 어떤 녀석이 GC 대상에서 제외되는지도 알 수 있습니다. Report 를 실행하면, 자동으로 어떤 녀석이 leak 여지가 있는지에 대한 분석도 지원합니다.

공식 링크 : http://www.eclipse.org/mat/



Eclipse에 Plug-in 설치하기


1. Help > Install New Software... 에 들어갑니다.




2. 
2-1. Work with에는 다음의 주소를 입력해주고, http://download.eclipse.org/releases/indigo ( 자신의 버전에 따라.. )

2-2. 검색창에는 memory 를 입력

2-3. [General Purpose Tools] 의 [Memory Analyzer] 와 [Memory Analyzer (Charts) [optional] 선택 ( 체크 ).

2-4. Next 후 약관동의 과정을 걸쳐 설치.





 



3.Windows > Open Perspective > Memory Analyzer




안드로이드에서 MAT 사용하기.


기본적으로 MAT 은 Android 용이기보다는 Java 공용에 가깝습니다. 그래서 안드로이드의 경우 hprof file 을 추출한 후에 Conversion을 거쳐 MAT 에서 그 파일을 로드하여 분석하는 과정을 거쳐야 합니다.



안드로이드에서 hprof file 추출해내기.

 
안드로이드에서 hprof file 을 추출하는 방법은 두가지가 있습니다.

1. DDMS 를 통해 뽑아내기
 ddms 에서 [Dump HPROF file] icon을 클릭하여 hprof 파일을 추출해내는 것입니다. 아이콘을 클릭하면 잠시 뒤에 저장할 위치와 파일 이름을 물어보는 윈도우 창이 뜹니다. 



2. 코드를 통해 hprof file 뽑아내기.
 heap dump를 수행하고 싶은 포인트가 되는 코드 부분에 Debug.dumpHprofData( String fileName ) 코드를 넣어줍니다. 이 때 fileName 은 "sdcard/prof/dumphprof.hprof" 와 같이 full path 로 넣어줍니다. 안드로이드 단말에서 실제로 쓰는 부분은 대부분 SD Card 이기 때문에  WRITE_EXTERNAL_STORAGE 권한을 manifest 에 넣어주는 것도 필수겠지요.



hprof 파일 전환하기.


안드로이드에서 추출한 hprof 파일은 그대로 MAT 에서 로딩할 수 없기 때문에 변환 과정이 추가로 요구됩니다. (참 귀찮죠.. ) Android SDK 에서 기본 제공하는 tools 폴더의 hprof-conv.exe 파일을 이용하여 변환을 해주는데 다음과 같은 명령을 수행하면 사뿐히 conversion 됩니다.

> hprof-conv [변환src] [변환dest]


이 [변환 dst] 파일을 MAT 을 통해 다음과 같이 로드합니다.







메모리 사용 상태 및 메모리 릭 분석.


변환된 파일을 로드하면 다음과 같은 화면이 뜹니다.
MAT 의 가장 두드러진 기능 중 하나가 Leak Suspects 를 제공해준다는 것이죠.
제가 돌린 테스트 프로그램은 다음과 같이 2명의 suspect 가 나오는 군요. 



여기까지가 간단하게 메모리 릭 잡기 및 메모리 분석하기 과정이었습니다.
이 툴은 이 Leak Suspect 이외에도 엄청난 기능들을 제공하는데, 이 부분은 직접 검색해보시기 바랍니다.
이 MAT 을 사용하는 방법만 해도 소책자 하나가 나올 정도랍니다. :)

사실.. 이 툴은 Android 의 메모리 사용상태를 분석하기에는 조금은 무리가 있었습니다.
하지만, 기본적으로 메모리 릭을 잡는다던지, 메모리를 분석하는 도구로서는 충분히 효용가치가 있습니다.


[참고 용어]
 





반응형

댓글