반응형
원문 : http://ecogeo.tistory.com/273
자바 프로세스에서 어떤 객체들이 얼만큼의 메모리를 점유하고 있는지 알아내기 위해 우리는 Heap 메모리를 분석합니다.
자바 프로세스에서 어떤 객체들이 얼만큼의 메모리를 점유하고 있는지 알아내기 위해 우리는 Heap 메모리를 분석합니다.
안드로이드에서는 달빅 VM의 힙 메모리를 3가지 수준에서 분석할 수 있습니다.
1. 개략적인 수준 - DDMS의 VM Heap 탭
아주 간략히 힙 메모리 통계 정보를 보여줍니다. Total/Allocated/Free 메모리 크기, 주요 타입별 객체 갯수 및 크기를 알 수 있습니다. 이게 전부입니다. 아쉽지만 특정 객체를 꼭 찝어서 할당된 갯수와 크기를 알 수는 없습니다.
그렇지만 메모리 누수가 의심될 때 실제로 누수인지 아닌지 간단하게 판단하는 용도로 활용할 수 있어보입니다. 의심되는 구간에 대해서 [Cause GC] 버튼을 눌러도 객체들이 GC되지 않고 계속해서 쌓인다면 메모리 누수를 의심할 수 있습니다. (안드로이드에서도 GC log 분석이 된다면 gc 로그를 분석하여 메모리 누수 여부를 판별할 수 있겠지만 제가 아직까지 이 방법을 찾지못했습니다)
2. 약간 상세한 수준 - DDMS의 Allocation Tracker 탭
Allocation Tracker는 트래킹을 시작한 이후로 새롭게 할당된 객체들 정보를 비교적 상세히 볼 수 있습니다. Allocation Tracke 사용에 대한 자세한 내용은 Tracking Memory Allocations 기사를 참고하시면 됩니다.(한글 번역 : http://blog.naver.com/huewu/110082424176)
3. 아주 상세한 수준 - Eclipse Memory Analyzer
전문가 수준으로 힙 메모리를 파악하기 위해서는 힙 덤프를 생성해서 분석해야 합니다. 현존 최고의 무료 자바 힙메모리 분석 도구는 아마 Eclipse Memory Analyzer(MAT)일 겁니다. MAT는 힙 분석을 위한 너무나 방대하고 다양한 기능을 제공하기 때문에 제가 감히(?) 여기서는 사용법을 설명드리지 않겠습니다. -.-;; 자세한 사용법은 MAT 공식 사이트나 Eclipse Memory Analyzer, 10 useful tips/articles 를 참고하시기 바랍니다(실토하자면 MAT는 저도 제대로 사용해보질 못했습니다. 머리 싸매고 힙 분석할 일이 아직 없네요. 문제 생기면 그때 공부하렵니다 ㅎㅎ).
반응형
'안드로이드' 카테고리의 다른 글
클래스 로딩 문제 분석하기, Part 2: 기본적인 클래스 로딩 예외(Exception) (한글) (0) | 2011.08.04 |
---|---|
[안드로이드] Asset 폴더의 제약사항 및 대용량DB 넣기 (0) | 2011.08.04 |
[자바] 큐(Queue) 성능 테스트 - ArryList, HashMap, LinkedList, ... (0) | 2011.07.29 |
안드로이드 폴더 삭제 (0) | 2011.07.21 |
자바 입출력(객체형식으로 파일 입출력, 소켓형식의 입출력) (0) | 2011.07.19 |
안드로이드 메모리 누수 줄이기 (0) | 2011.07.07 |
RSS(Really Simple Syndication) 표준 (0) | 2011.07.07 |
안드로이드 XML 파싱방법 - SAX, XmlPullParser, DOM (0) | 2011.07.06 |
[안드로이드] 코드상에서 안드로이드 빌드 버전 확인하기 (0) | 2011.07.05 |
날씨 정보 제공자 (0) | 2011.06.30 |