마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 개발 메모리 체크 관련

0 추천

안녕하세요!

안드로이드 개발중에서 메모리 체크관련사항이 궁금하여 이렇게 질문 올립니다!

개발중인 어플이 있는데 3d 모델을 불러오면 메모리가 늘어나게 되고 그러다가 어플이 강제종료되는 현상이 있습니다.

그래서 모델을 불러올때 현재 디바이스의 전체 메모리, 사용 메모리, 여유 메모리를 분석하여 해당 문제에 대한 대비책을 세우려고 하는데요

안드로이드 스튜디오에서 기기를 연결한 상태에서 Run 하였을때 메모리를 실시간으로 확인할 수 있는 방법엔 어떠한것이 있을까요?

현재 제가 알아본 방법은

1.스튜디오의 ADM(Android Device Monitor)에서 Heap 을 찍어보는방법

2.long totalMemory = Runtime.getRuntime().totalMemory();
long freeMemory = Runtime.getRuntime().freeMemory();
long maxMemory = Runtime.getRuntime().maxMemory();

long nativeHeapFree = Debug.getNativeHeapFreeSize();
long nativeHeapAllocatedSize = Debug.getNativeHeapAllocatedSize();
long nativeHeapSize = Debug.getNativeHeapSize();

이러한 형식으로 직접 코드에 추가하여 로그에 띄우는 방법

3. 이클립스의 MAT

 

이렇게 파악하고 있습니다.

가장 먼저 3번은 이클립스가 아니라 패스하였고, 1번의 경우는 Heap Size가 나오는데 48m 이상 넘어가지 않아서 솔직히 어떤 숫자를 띄어주는건지 잘 모르겠습니다...

2번은 어플이 실행되고 각종 기능이 수행되며 실시간으로 돌아가면서 로그를 띄어주어야 하는데 어느 특정 코드에서만 로그를 띄어주다보니 어플의 전체적인 메모리 확인이 불가하다고 판단하였습니다.

 

혹시 어플의 시작과 동시에 메모리를 실시간으로 확인할 수 있는 방법이 있을까요?

현재 테스트 디바이스는 안드로이드 태블릿이며 5.0.2 버전 RAM은3GB 입니다!

두서없는 글 봐주셔서 감사합니다!

좋은하루 되세요!^^

익명사용자 님이 2016년 9월 19일 질문

1개의 답변

0 추천
음....

2번을 프로그램 시작 시 Thread로 하나 돌리심이 어떠실지요??

new thread 해서 run에다가 올리신 2번을 루프 돌리시면 될꺼가튼데요....
비애천사 (12,080 포인트) 님이 2016년 9월 19일 답변
아... 물론 sleep 주셔야 겠죠.... 간격이야 적당히 원하시는 만큼... ㅎㅎ
...