안드로이드 메모리 누수 해결 (진저브리드 기준)
Source
Evernote/Article Scraps/android 안드로이드 메모리 누수 줄이기.md
Summary
안드로이드 2.3(진저브리드)부터 이미지 디코딩 방식 변경으로 인한 메모리 누수 문제를 해결하기 위한 수동 메모리 관리 기법입니다. 액티비티 종료 시 onDestroy에서 View 계층의 Drawable을 재귀적으로 null 처리하고 System.gc()를 호출하여 메모리를 환원합니다. 특히 AdapterView는 별도의 recycle() 메소드를 구현하여 WeakReference로 관리된 뷰를 해제해야 하며, 심각한 메모리 부족 시 BitmapFactory.Options를 활용한 저해상도 디코딩을 권장합니다.
Key Points
- 안드로이드 2.3 이상에서 이미지 처리 시 메모리 사용량 증가 및 누수 현상 발생
- View 계층의 Drawable을 재귀적으로 null 설정하는
RecycleUtils유틸리티 클래스 제공 - 액티비티
onDestroy시getWindow().getDecorView()에 대해 재귀 해제 후System.gc()호출 AdapterView사용 시 Adapter 내부에서 생성된 뷰를WeakReference로 관리하고 별도 해제 메소드 구현 필요- OOM(OutOfMemoryError) 발생 시 XML Inflate 대신 BitmapFactory.Options를 이용한 저해상도/16bit 디코딩 권장