글
최신 Memory Analyzer 설치 (Stand-alone) 및 덤프 파일 로딩 방법
안드로이드 애플리케이션 개발 환경이 Eclipse에서 Android Studio로 넘어오면서
Memory Analzyer(이하 MAT - Memory Analyzer Tool)를 사용하는 것이 좀 애매해 졌습
니다.
기존에는 MAT가 Eclipse의 플러그인 형태로 제공되었기 때문에 MAT를 이용하려면
Eclipse를 추가로 실행해야 합니다. 또한 더 이상 Eclipse용 ADT가 업데이트 되지
않으므로 DDMS -> MAT 로 연계시켜 이용하는 방법이 어려울 거라 예상됩니다.
그래서 앞으로는 Android SDK에 포함된 Android Device Monitor(sdk/tools/monitor)에
서 hprof 덤프를 떠서 MAT Stand-alone 에서 로딩 하는 방법으로 이용해야 합니다.
(나중에라도 Android SDK에 포함된 Android Device Monitor 에서 MAT 플러그인을 설치
할 수 있도록 지원이 되어 바로 DDMS - MAT 연계가 되면 좋겠지만, 지금 테스트 해 본
결과, 현재 Eclipse MAT 플러그인 설치는 되지 않습니다.)
먼저 MAT Stand-alone 버전의 다운로드는 아래 링크에서 받을 수 있습니다.
http://ftp.kaist.ac.kr/eclipse/mat/1.6/rcp/
(이 글을 쓰는 시점 기준으로 1.6 최신 버전입니다. 공식 사이트의 속도가 너무 느려
서 일부러 한국 미러 사이트 링크를 걸어 두었습니다.)
위 링크에서 플랫폼에 맞는 버전을 선택해서 다운로드 하시면 되겠습니다.
단, 리눅스 버전의 경우 openjdk를 사용하게 되면 자꾸 죽는 현상이 발생했습니다.
혹시 같은 문제가 생기시는 분은 MemoryAnalyzer.ini 파일에 아래 두 줄을 추가해 주
세요. jdk 위치는 각자 환경에 맞게 수정하시면 됩니다.
-vm
/usr/lib/jvm/jdk1.7.0_51/bin
그리고 가져온 hprof 파일의 포맷을 변환하는 방법은 아래와 같습니다.
sdk/platform-tools/hprof-conv src dst
추가로 adb 명령으로도 hprof 덤프를 받을 수 있습니다.
adb shell am dumpheap pid혹은process명 hprof파일경로
위 명령으로 생성된 파일은 디바이스 내장메모리에 저장이 되므로, adb pull 명령으로
PC로 가져와야 합니다. 하지만 'Cause GC' 를 수행 할 수 없기 때문에 힙 덤프 분석
이 좀 더 귀찮아 질 것 같습니다.
P.S
이후 시간이 된다면 hprof-conv를 좀 더 편하게 할 수 있는 Front-End 툴을 만들어
첨부 하도록 하겠습니다.
'안드로이드' 카테고리의 다른 글
Singleton을 위해 Application Context를 제공하는 static method를 둘까? (3) | 2016.10.14 |
---|---|
root layout 의 margin 이 동작하는 않는 문제(2016.7.15 수정) (0) | 2016.07.13 |
안드로이드 루팅 없이 어플 데이터 백업하기. (1) | 2013.09.26 |
[안드로이드] adb 를 이용한 터치 이벤트 보내기. (7) | 2012.12.01 |
[프로그래밍] 안드로이드 에뮬레이터 실행 안되는 문제 수정. (0) | 2010.04.10 |