-
memory leak 회피하기안드로이드/Tip 2011. 8. 7. 22:33
안드로이드 어플을 개발할 때 허용되는 힙 사이즈는 디바이스마다 다르긴 하지만 대략 15메가 내외로 제한적입니다.이 상황에서 카메라 어플이나 포토에딧 어플과 같은큰 이미지를 제어한다던지, 겔러리나 리스트 뷰에서 다량의 이미지를 제어하는 경우,거의 대부분 out of memory 문제를 접하게 됩니다.
이런 경우에 대해서 잘 정리된 사이트가 있어서 먼저 소개 합니다.
대부분의 메모리 문제의 경우, Bitmap recycle 과 Drawable callback 을 null 로 맞추어서 해결할 수 있습니다만,겔러리나 리스트뷰의 경우 ListAdapter 에서 생성하는 View 를 제대로 unbind 를 해주지 않는다면 메모리 문제가 발생할 수 있습니다.
특히 BitmapDrawable 과 NinePatchDrawable 을 명확하게 구분해서 사용해야 하는데,메모리를 많이 사용하는 어플의 경우 힙 사이즈 제한으로 인해 bitmap 을 개발자가 create / recycle 하면서 메모리를 관리하게 되는데,NinePatchDrawable 을 사용한 경우 해당 bitmap 을 개발자가 recycle 할 수 있는 방법이 없기 때문에bitmap create / recycle 이 필요한 경우 BitmapDrawable 을 사용해야 하는 경우가 있습니다.
또한 ListAdapter 의 경우, 항상 view 를 새로 생성하는 방식은 피해야 하며,일반적으로 convertView 를 사용하지만, 때에 따라서 개발자가 직접 view instance 를 관리하는게메모리 관리에 있어서는 더 명확해 보일 수도 있습니다.
또한 activity 의 onPause 에서 메모리를 해제할 것들과 onDestroy 에서 메모리를 해제할 것들을 구분해야 하며,activity 를 start 할 때 flag 를 어떻게 줄 것인지도 같이 고민을 해야background 에 있는 activity 의 메모리로 인해, 현재 activity 에서 out of memory 가 발생하는 문제도 해결 할 수 있을 것입니다.
감사합니다.http://floo.co.kr/
안드로이드 펍을 돌아다니가 복사해 왔습니다. ^^;;
출처 : http://www.androidpub.com/index.php?document_srl=818409&act=trackback&key=9ff
'안드로이드 > Tip' 카테고리의 다른 글
안드로이드 OS 버전 (0) 2011.08.30 Vertical Seekbar 응용 (0) 2011.08.18 이것이 안드로이드의 구조 (0) 2011.08.09 Android OpenCORE (0) 2011.08.08 초성검색 알고리즘 (0) 2011.08.07 TIP. 어뮬레이터가 실행되지 않을때. (0) 2011.08.01 소프트 키보드 보이기/숨기기 (0) 2011.05.30 안드로이드 Manifest (0) 2011.05.29 [Android Tip] 마켓설치, PC설치, T-store설치, APK설치, 이클립스설치 어플들의 호환관계 (0) 2011.05.29 액티비티 생명주기 (0) 2011.05.08 댓글