2013-01-05 2 views
5

Eclipse Memory Analyzer Tool (MAT)을 사용하여 Android 활동에 메모리 누수가 있는지 조사하고 있습니다. 액티비티에 누수가있는 경우, 힙에 돌아가는 쓰레기 수거를하지 않고 죽은 인스턴스가있을 것으로 예상됩니다. 이를 확인하기 위해 필자는 작업을 반복해서 시작 및 중지하고 (Back 단추를 눌러) MAT를 사용하여 힙 덤프를 검사합니다.활동의 첫 번째 인스턴스는 결코 가비지 수집되지 않습니까?

하지만 설명 할 수없는 몇 가지 이상한 행동을 관찰하고 있습니다. 활동의 첫 번째 인스턴스 (강제 종료 후 시작됨)는 결코 가비지 수집되지 않습니다. 그러나 후속 인스턴스가 수행합니다. 필자는 MAT 도구를 사용하여 검사 한 결과를 알고 있습니다. 작업이 시작되고 중지 된 횟수에 관계없이 MAT 도구는 항상 힙에 두 개의 인스턴스를 표시합니다. 첫 번째 인스턴스는 활동이 처음 시작된 시간에 속하며 두 번째 인스턴스는 최근에 실행 된 활동에 속합니다.

어떤 일이 벌어지고 있는지, 그리고이 문제에 대해 걱정해야하는지에 대한 아이디어. 메모리 누출? 제안은 대단히 감사합니다.

+2

실제 액티비티 또는 정의 된 변수 중 하나가 액티비티의 원래 인스턴스에 고정되어있을 수 있습니다. MAT를 사용하여 무엇을 참조하고 있는지 확인할 수 있습니다.보기에서 추적 할 수 있습니다. – dmon

+1

특히 GC 루트를 추적하여 그 내용을 확인하고 싶습니다. – CommonsWare

+0

그 두 가지 의견을 보내 주셔서 감사합니다. 액티비티에는 주로 구성원 객체가 많이 있습니다. 그러나 "약한/부드러운 참조 제외"를 수행하면 안드로이드 매핑 구성 요소에 영향을 미칩니다. 내 활동은 MapActivity의 하위 클래스입니다. 부실 활동 객체는 android_maps_conflict_avoidance.com.google.googlenav.map.MapFlashService에서 참조하는 것으로 보입니다. 어쩌면 이것은 알려진 이슈 일 것입니다 - 나는 그것을 조사 할 것입니다. –

답변

0

닫기 : MapActivity 하위 클래스의 메모리 누수 문제가있는 것 같습니다. 예 : code.google.com/p/android/issues/detail?id=2181. 나에게 맞는 해결 방법을 찾지 못했습니다.

관련 문제