본문 바로가기

모바일앱/앱성능 최적화

eclipse MAT(메모리 분석 도구) 활용

Eclipse Memory Analyzer는 Java Heap 메모리 분석 도구이다.

메모리 릭을 발견하거나 분석을 통해 메모리 소비를 줄일 수 있도록 지원한다.

 

설치



STEP1.  MAT eclipse plug-in 설치

             Help > Install New Software ...

              work with [ http://download.eclipse.org/releases/juno ]

             검색창에 memory 입력

             [General Purpose Tools][Memory Analyzer]

             [Memory Analyzer(Charts) [optional] 선택

 

STEP2.  perspective 열기

              Windows > Open Perspective > Memory Analyzer

 

<참고> MAT는 자바공용 툴이다. 그래서 안드로이드의 경우 hprof 파일을 추출한후에 Conversion을 거쳐 MAT에서 그 파일을 로드하여 분석한다.

 

STEP3. 안드로이드에서 hprof 추출하기

             DDMS에서 [Dump HPROF file] 아이콘을 클릭하여 hprof파일을 추출한다.

 

 

 

사용가능한 메뉴



 

Action

- Histogram : 클래스당 인스턴스 수를 리스트로 출력

- Dominator Tree:  Biggest Object List와 그것을 keep alive하게 하는것에 대한 정보 출력

- Duplicate Classes: 다중 클래스 로더에 의해 중복적으로 로드된 클래스 정보 출력

 

Report

- Leak Suspects: 메모리 누수를 발생할 가능성이 있는 객체에 대한 정보와 시스템 개요 정보 출력

- Top Components: 힙사용량이 전체 힙사이즈의 1%이상인 컴퍼넌트 리스트 출력

 

Step by Step

- COmponent Report: common root package또는 class loader에 포함되는 오브젝트 분석 정보 출력

 

[참고용어]

결과물을 이해하기 위해 기본적으로 정리해야 하는 용어

Shallow Heap: 1개의 오브젝트가 소비하고 있는 메모리량. 한개의 참조에 대해 4바이트 사용

Retained Heap: GC에의해 제거되는 오브젝트가 사용한 Shallow Heap의 합계