2012-12-12 4 views
0

Android에서 내 앱의 높은 메모리 사용 문제를 해결하는 방법을 알고 싶습니다. 나는 인터넷을 검색하여 DDMS 플러그인이 내 응용 프로그램의 힙을 메모리 덤프하는 데 유용하다는 것을 알았습니다. 그러나 이것은 쓸모 없어졌습니다.android app 메모리 사용 문제 해결

응용 프로그램 "Usage Timelines Free"는 94MB의 메모리를 사용하는 반면 DDMS 힙 덤프는 총 8.4MB의 누출을 나타내며 누수가 의심되는 리소스 파일을 보여줍니다.

내가 ADB에서 덤프를 생성

은 (dumpsys meminfo 파일), 내가 얻을 :

     Shared Private  Heap  Heap  Heap 

       Pss Dirty Dirty  Size Alloc  Free 

      ------ ------ ------ ------ ------ ------ 

    Native  20  8  20 54588 39431  1892 

    Dalvik  6732  9952  6396 10756 10028  728 

    Cursor  0  0  0       

    Ashmem  184  0  184       

Other dev 11462  1172 11384       

.so mmap  2467  2072  1156       

.jar mmap  0  0  0       

.apk mmap  48  0  0       

.ttf mmap  2  0  0       

.dex mmap  1037  0  0       

기타의 mmap (41) (16) (32)

Unknown 46352  292 46348       

    TOTAL 68345 13512 65520 65344 49459  2620 

어떻게이 거대한 메모리 소비 뒤에 무엇인지 알 수 있습니다. 내 앱은 하루에 몇 번씩 액세스되는 몇 가지 활동과 함께 영원히 실행되는 전경 모니터 서비스입니다.

감사합니다.

+0

http://ttlnews.blogspot.in/2010/01/attacking-memory-problems-on-android.html –

+0

을 나는 이미이 ... DDMS를 사용하고 힙 메모리 덤프를 얻었다. 그것은 단지 8.4 MB가 사용되고있는 것을 보여 줬습니다! – black

답변

0

힙 메모리 덤프가 있습니다. 그것은 단지 8.4 MB가 사용되고있는 것을 보여 줬습니다!

그런 다음 전체 가비지 수집 (힙 덤프 만들기의 순수한 효과) 이후에 8.4MB의 힙 공간 만 사용합니다.

Android 1.x/2.x에서 실행 한 경우 MAT는 비트 맵에서 사용하는 공간을보고하지 않습니다. Android 3.0 이상 장치 또는 에뮬레이터에서 항상 힙을 덤프하십시오.

내 생각 엔 당신이 안드로이드 1.x에서/2.x에서 장치 또는 에뮬레이터에서이 작업을 실행하고 있는지, 그리고 :

내가 ADB에서 덤프를 생성

은 (dumpsys meminfo 파일), 내가 얻을 당신은 많은 비트 맵 메모리를 가지고있다. Android 3.0 이상 환경에서 힙 덤프 및 기타 테스트를 실행 해보십시오.

또한 adb dumpsys meminfo은 전체 가비지 수집을 수행하지 않지만 HPROF 파일은 덤프하는 것을 유의하십시오. 안드로이드 가비지 수집기는 CPU 사용을 최소화하도록 최적화되어 있으므로 가비지 수집을 완전히 시도하지 않습니다. 따라서 런타임에 힙은 일반적으로 GC 엔진에 의해 필요에 따라 재생 될 가비지로 채워집니다.

Dianne Hackborn's essay on this subject을 읽어 볼 수도 있습니다.

+0

죄송합니다. 애플리케이션이 Galaxy Nexus (JB 4.2)에서 실행 중이라고 언급 했어야합니다. 이 결과는 거기에서 생성됩니다. 많은 비트 맵 이미지를 말할 때 많은 비트 맵 이미지를 의미합니까? 나는하지 않는다. 나는 두 개의 로고와 작은 아이콘을 가지고있다. 또한,이 "다른 개발자"는 무엇입니까? 액티비티를 열면 증가하지만 종료 할 때는 증가하지 않습니다. – black

+0

@Sebouh : 그렇다면 메모리 사용량은 매우 합리적입니다. Galaxy Nexus의 경우 8MB가 다소 적습니다. "많은 비트 맵 이미지를 말할 때 많은 비트 맵 이미지를 의미합니까?" - 아뇨, ​​많은 비트 맵 메모리를 의미합니다. 그것은 "많은 비트 맵 이미지"또는 "몇 가지 큰 이미지"일 수 있습니다. "또한이"다른 개발자 "는 무엇입니까?"- 당신의 프로세스에 게으른로드가 걸리는 것, 그러나 그 이상으로 나는 전혀 모른다. – CommonsWare

+0

감사합니다. 그러면이 타임 라인 앱에서보고 한 94MB에 대해 걱정할 필요가 없습니다."알 수없는 "mem은 다음과 같습니다. 거대한 ... 그게 무슨 생각일까요? – black