본문 바로가기

안드로이드

[안드로이드] 이미지에 대한 메모리 누수(Memory Leak)를 방지하자

'완벽한 안드로이드 앱을 만드는 실무 노하우 139, 029'를 인용하였다


이미지를 사용하다 보면 OOM(OutOfMemory)이 발생할 가능성이 높아진다. 또한 비트맵 객체는 안드로이드의 버전에 따라 처리하는 방법에 차이가 있다


안드로이드 2.3 이하 버전에는 비트맵 객체가 recycle() 메서드를 호출하지 않으면 네이티브 메모리에 존재했다. 그때 ImageView에서 setImageDrawable(null)을 실행하고, 참조하는 비트맵을 해제하지 않으면 예외가 발생한다. 주의해야 한다


안드로이드 3.0 이후 버전에서는 구현 방법이 변경되어 비트맵 객체를 사용해도 네이티브 메모리를 사용할 수 없기 때문에 finalize를 할 때 힙 메모리를 해제한다. 따라서 비트맵 변수에 null을 대입하는 것만으로도 안드로이드 3.0 이전에 발생했던 비트맵 해제를 하지 않아서 예외가 발생했던 문제점을 해결할 수 있다


이전에 포스팅한 내용을 참고하자


1.

http://aroundck.tistory.com/2535


2.

http://d2.naver.com/helloworld/539525



<출처 : http://horajjan.blog.me/220306887557>