깨진이빨의 컴퓨터 이야기

안드로이드 메모리 누수 정리 본문

Android

안드로이드 메모리 누수 정리

깨진이빨 2017. 3. 29. 17:47

안녕하세요. 오늘은 안드로이드 메모리 누수에 대해서 간략하게 정리 해보고자 합니다.  메모리 누수는 메모리를 할당(힙메모리(new), 정적메모리(static)) 후 액티비티 포커스를 잃게되면 해당 영역은 두둥실 떠 있게 되는데 이걸 메모리 누수라고 하며, 가비지 컬렉터가 회수를 할 수 없게 됩니다. 이렇게 하나둘 늘어나게 되면 결국 메모리 부족으로 시스템에서 강제로 앱을 중지시켜버립니다. 이러한 문제를 미연에 방지하기 위해서 반드시 코딩시에 항상 염두해 두어야 합니다. 


간략하게 정리하자면


1. static으로 할당된 변수나 객체가 한 액티비티 안에서만 쓰이다면 static으로 설정하지 말고 액티비티 전환시 반드시 null 처리를 해주셔야 합니다.


2. 핸들러, AsyncTask를 통해 작업을 걸어두었고 다른 액티비티로 이동하게 된다면 해당 작업을 종료 혹은 취소해 주세요. (onDestroy에 구현)


그리고 자신의 앱이 메모리 누수가 일어나는지 확인하기 위해선 다음 링크의 프로젝트를 자신의 프로젝트에 포함시키게 되면 어디서 메모리 누수가 일어나는지 쉽게 파악 할 수 있습니다.


https://github.com/square/leakcanary


감사합니다.