2011-03-01 3 views
4

안녕하세요, Android에 익숙하지 않아서 내가 틀렸다면 친절하게 수정 해주세요 : 생성 된 개체 수와 힙 사용 횟수를 모니터하려고합니다. DDMS를 통해 객체 수에 따라 다름). 이 과정에서 응용 프로그램을 시작하면 '아니오'입니다. 생성 된 개체의 뒤로 버튼을 누르면 반드시 onDestroy()가 호출되지 않으므로 객체의 수는 여전히 'n'과 같습니다. 이제 애플리케이션을 다시 시작하면 onCreate()가 호출되고 다시 'n'객체가 생성됩니다 (이제 총 객체 수는 'n'이상이됩니다). 그러면이 프로세스 (앱 재실행)가 반복되어 개체 수가 계속 증가할까요? (분명히 발생해서는 안됨)Android DDMS에서 개체 생성 추적, 메모리 부족으로 인한 VM

답변

1

오브젝트의 개수는 생성 될 때 증가하고 가비지 컬렉터가 실행될 때 감소합니다.

가비지 수집을 사용하여 개체 수가 계속 증가하는 경우 메모리 누수가 발생할 가능성이 큽니다. "hprof"힙 덤프 (DDMS에서 버튼을 클릭하여 트리거 할 수있는 경우)는 원인을 식별하는 데 도움이됩니다.

+0

ans Sebastian을 이용해 주셔서 감사합니다.하지만 내 옆에서 메모리 누출이 발생했다고 생각하지 않습니다. GC 후에도 ('원인'버튼을 눌러서) 개체가 증가하고 있습니다. 샘플 'Hello Android'프로그램을 사용하여이 프로세스를 반복하더라도 총 번호는 없습니다. 소위 '데이터 객체'의 증가로 인해 객체의 수는 증가하고 있습니다. 나는이 '데이터 객체'가 리소스 (또는 이미지/비트 맵)와 관련이 있다고 추측합니다. 그리고 VM에 메모리 부족 예외가 발생했을 수 있습니다. 게임을 개발하는 동안, 큰 번호로 인해. 리소스, 이미지, 비트 맵, 데이터 개체가 계속 증가하여 메모리 부족을 초래합니다. –

+0

http://developer.android.com/resources/articles/avoiding-memory-leaks.html도 참조하십시오. – fadden

관련 문제