Allocation Tracker

  

 

<용도>
효율적으로 메모리를 사용하기 위한 도구입니다.
garbage collector가 빈번하게 호출되면 성능이 내려가기 때문에
이를 해결하기 위해 실행 시간에 Application의 메모리 상태를 볼 수 있도록 하는 도구입니다.
어플리케이션에서 어떤 action을 하면 object들이 어디에 할당되는지 실시간으로 추적할 수 있습니다.

 

<사용법>
1. DDMS가 실행되면 해당 Application process를 선택하고 Allocation Tracker Tab을 클릭합니다.
2. Start Tracking을 클릭하면, 이제부터 어플리케이션에서 어떤 작업을 하든지 전부 추적됩니다.
3. Get Allocations를 클릭하면, Start Tracking 버튼을 누른 뒤부터 할당된 object의 목록을 보여줍니다. Get Allocations를 다시 클릭하면 새로 할당된 object들을 덧붙입니다.
4. Stop Tracking을 클릭하면 추적을 멈추게 됩니다.
5. object에 할당된 method라든지 코드의 line number와 같은 자세한 정보를 보고 싶으면, 목록의 해당 행을 클릭하면 됩니다.

 

 

 

프로파일링에 대한 추가 정보는 아래에서...

http://developer.android.com/guide/developing/debugging/debugging-tracing.html

http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html

http://ecogeo.tistory.com/285

http://aroundck.tistory.com/183

http://dhna.tistory.com/291

http://dhna.tistory.com/237

http://mungi.tistory.com/167

 

'안드로이드' 카테고리의 다른 글

DDMS 기초  (0) 2012.05.08

 

DDMS(Dalvik Debug Monitor Server)에서 자주 사용하는 기능은 아래 다섯 가지 정도입니다.

1. 프로세스 관리
2. 에뮬레이터 조작
3. 로그 관리
4. 파일 관리
5. 화면 캡쳐

 

1. 프로세스 관리
Devices 탭은 현재 안드로이드에서 동작하고 있는 프로세스의 목록을 보여줍니다.
안드로이드에서는 VM이 하나씩 할당되므로, 프로세스의 목록이 곧 VM의 목록과 같습니다.

이 탭은 강제로 프로세스를 종료할 때 많이 사용됩니다.
프로세스의 메모리 소비, 쓰레드 정보 등을 확인할 수 있습니다.

 

 

사용할 수 있는 기능들을 살펴보겠습니다.

 

디버깅하려는 프로세스를 선택하고 이 버튼을 누르면 디버깅을 합니다. 이클립스에서 진행중인 프로젝트의 프로세스만 디버깅이 가능합니다.

 

해당 프로세스의 메모리 점유율을 확인할 수 있습니다.

 

덤프파일을 추출해서 덤프 분석 툴로 메모리 상태를 자세히 볼 수 있습니다.

 

메모리 중에 불필요한 부분을 강제로 제거해서 메모리 누수 여부를 확인합니다. 사실 안드로이드에서는 C언어처럼 실제 누수가 일어나는 일은 없지만, 불필요한 참조로 인해 메모리가 낭비되는 경우를 메모리 누수라고 합니다.

 

프로세스 내의 쓰레드 정보를 보여줍니다.
쓰레드 정보는 양이 너무 많으므로, 매번 업데이트하면 네트워크 전송량이 너무 많아집니다. 그래서 Update Threads를 클릭해야만 쓰레드의 현재 정보가 나타납니다.

 

일정 시간 동안 프로세스의 메소드 정보를 기록하고 분석합니다.

 

선택한 프로세스를 강제로 종료합니다.

 

선택된 장치의 화면을 캡처합니다.

 

오랫동안 동작할 경우, 리소스가 부족해져서 응답이 없는 상태가 될 수 있습니다. 그럴 경우 이 버튼을 눌러서 리셋시켜주면 정상 상태로 돌아옵니다.

 

 

2. 에뮬레이터 조작
에뮬레이터 통신 상태 및 가상 위치를 조절합니다.
전화 걸기, SMS 보내기가 가능합니다.

 

 

Incoming number에 발신자의 전화번호를 입력한 후, Voice를 선택하고 Call 버튼을 누르면 에뮬레이터에 Incoming number에 입력한 번호로 전화가 오게 됩니다.

 

 

Voice 대신 SMS를 선택하고, SMS의 내용을 입력한 후 Send 버튼을 눌러주면 문자 메시지를 보낼 수 있습니다. 문자를 연달아 3통이나 보냈군요.

 

이것은 GPS 좌표입니다. 경도, 위도 순으로 되어 있습니다.

에뮬레이터에서 구글맵을 켜봅니다.

 

 

원하는 지역의 좌표를 알려면 아래 주소를 참고합니다.
http://maps.google.com/

 

원하는 좌표를 찾아가거나, 검색을 한다음 마우스 오른쪽 버튼을 클릭합니다.
마지막 항목인 "이곳이 궁금한가요?"를 클릭하면 좌표가 나옵니다.

 

이 좌표를 Location Controls의 경도와 위도에 넣어줍니다.

그리고 Send를 클릭하면, 에뮬레이터의 구글맵에서 자신의 위치가 원하는 위치로 바뀝니다.

 

두번째 탭인 GPX는, 여러 GPS들이 로그 표시파일로 만든 파일을 읽을 수 있게 한 것입니다.
확장자 명이 *.gpx파일만을 읽을수 있습니다.
구글링하면 쉽게 gpx파일을 찾을 수 있습니다. 로드하고 플레이 버튼을 눌러보면 마치 네이게이션 처럼 좌표가 움직이는 것을 볼 수 있습니다.

 

세번째 탭인 KML은 구글에서 만든 좌표파일입니다.
 

 

 

3. 로그 관리

DDMS에서 가장 많이 사용하는 창 중 하나입니다. 에뮬레이터/기기의 상태와 관련된 로그들을 확인할 수 있으며, 런타임 에러가 발생한 경우 여기에 출력되는 로그 확인을 통해 구체적으로 어디에서 문제가 발생했는지 알 수 있습니다.

로그는 시스템이나 응용 프로그램의 동작에 대한 상세한 기록입니다. 디버깅은 느리고 직접 해봐야 상태를 알 수 있는 반면, 로그는 항상 출력되며 실시간으로 출력된다는 장점이 있습니다.
멀티 쓰레드나 네트워크 응용 프로그램 같은 복잡한 문제도 로그를 사용하면 쉽게 발견할 수 있습니다.
따라서 가급적이면 로그 출력문을 많이 작성해두는 것이 좋습니다.

LogCat 화면에 로그가 표시되지 않는 경우가 있는데, 이는 대부분 로그를 받아올 에뮬레이터 혹은 기기가 선택되어 있지 않아서 발생합니다. 로그를 받아올 에뮬레이터 혹은 기기를 선택해주면 로그가 정상적으로 표시됩니다.

 

 

4. 파일 관리
에뮬레이터 또는 기기 내의 파일을 탐색합니다.
안드로이드 장비 자체에 파일 탐색기가 내장되어 있지 않으므로, DDMS의 탐색기를 통해서만 파일 관리가 가능합니다. 파일만 관리할 뿐, 디렉토리는 관리할 수 없습니다.
파일 import/export를 할 수 있습니다.

 

에뮬레이터 내에 파일 넣기

1) File Explorer 상단의 Push a file onto the device 아이콘을 클릭합니다.

 

 

2) 에뮬레이터에 넣어줄 파일을 선택합니다. 여기에서는 그림 파일을 넣어보도록 하겠습니다. 파일을 선택한 후 열기 버튼을 누릅니다. 

 

3) 아래와 같이 파일이 추가되었음을 확인할 수 있습니다. 이 방법으로 mp3파일이나 mp4파일 등도 넣어주는 것이 가능합니다. 단, 파일명은 모두 영문이여야만 합니다.


위와 같이 미디어 파일을 추가한 후에는 에뮬레이터에서 해당 파일을 인식하게끔 해 주어야 합니다. 실제 기기라면 SD카드를 다시 삽입하거나, USB모드를 해지하면서 자동으로 SD카드를 스캔하여 새로 추가된 데이터를 인식하지만, 에뮬레이터는 이 작업을 수동으로 해 주어야 합니다.


어플리케이션 런처에서 DevTools를 열면 아래와 같은 화면이 뜹니다.

MediaScanner를 클릭하면 에뮬레이터에서 새로 추가된 파일을 스캔하게 되므로 새로 추가된 미디어 파일을 정상적으로 인식할 수 있습니다.


 

에뮬레이터로부터 파일 추출하기


1) 추출할 파일을 선택합니다.

 

2) Pull a file from the device 아이콘을 클릭합니다.

 

 


3) 파일을 저장할 경로를 지정해주면 지정한 경로에 해당 파일이 저장됩니다.

 

 

5. 화면 캡처


에뮬레이터나 기기의 현재 화면을 캡쳐합니다. Device창 오른쪽의 Screen Capture 버튼을 눌러 화면을 캡쳐할 수 있습니다.

 

 

'안드로이드' 카테고리의 다른 글

프로파일링에 관한 자료 모음  (0) 2012.05.08

+ Recent posts