본문 바로가기
안드로이드

[안드로이드] OutOfMemory 왜 발생하는거야?

by 호군 2011. 10. 24.
반응형

 PC의 응용프로그램을 개발하다가 안드로이드 앱을 개발하게 되는 케이스들이 많을 거라고 생각합니다. 저 역시 그런 종류의 사람입니다. PC에서는 메모리 자원이 많아서 대부분의 자료를 메모리에 할당하여 사용합니다. 속도도 더 빠르겠죠.. 안드로이드 앱도 그렇게 코드를 작성해버렸네요. 그래서 결국 OutOfMemory라는 철천지 원수를 만나게 됐습니다. 
 대략적인 구조는 웹으로부터 XML 데이터를 가져오고, DOM파서로 데이터를 파싱해옵니다. 그리고 하나의 일치된 타입으로 데이터를 변환하여 저장하지요. 여기서 DOM파서와 변환된 데이터 이 두개가 한순간에는 동시에 존재하면서 많은 메모리를 차지하는 것 같더군요. 그리고 무엇보다도 Bitmap을 사용하고 있었는데 메모리 할당이 제대로 되지 않고 있었습니다. 개발 하던 앱의 종류가 AppWidget 이였습니다. 이 AppWidget에는 ImageView도 있었기 때문에 웹에 있는 이미지를 Bitmap으로 생성해서 할당을 했었죠. 그리고 무심코 recycle()을 하지 않고 있었습니다. 이미지의 크기가 작아서 몰랐지만, 차곡차곡 쌓여서 저의 목을 조르고 있었죠.

반응형