OOM(Out of Memory)

어플리케이션 실행 시, RAM에 할당할 메모리가 없을 때 발생하는 에러다. 안드로이드 앱에서도 당연히 발생할 수 있다.

먼저 메모리 사용량이 어떻게 변화하는지 확인해보자. adb 명령어를 통해 메모리 상태를 체크할 수도 있다. 하지만, 명령이 실행된 당시의 상태가 표시되기 때문에 문제를 확인하기 어렵다. 대신 안드로이드 스투디오에서 제공하는 메모리 모니터링 툴을 이용하면 편리하다. 메모리 그래프가 실시간으로 업데이트 되기 때문에 그래프를 관찰하면서 이것저것 테스트 해보면 쉽게 문제를 좁혀갈 수 있다.

메모리 릭으로 인해 OOM도 발생할 수 있지만, 순간적으로 앱에서 사용하는 메모리 량이 늘어가는 경우에도 발생할 수 있다. 혹시, 메모리 변화를 모니터링 했지만 특별히 이상한 점을 찾지 못했다면 앱이 사용하는 메모리가 순간적으로 증가하는 것일 수도 있다. 단말마다 앱에게 기본적으로 할당하는 힙 메모리의 크기는 제한이 있으며, 이 글을 참고하면 쉽게 최대 힙 메모리 사이즈를 확인해 볼 수 있다.

11-09 17:06:00.806 31550-31550/me.sunphiz.android.test.memory V/sunphiz: maxMemory:268435456 byte(256mb)

혹시 앱의 메모리가 기본 힙 메모리 제한 크기를 넘어선다면, AndroidManifest에 android:largeHeap 파라미터를 통해 최대 힙 메모리 크기를 늘리는 옵션도 고려해보자. Galaxy S7의 경우, 옵션을 사용하면 2배 더 메모리를 쓸 수 있다. 모델 마다 다를 수 있으니 주의하자.

11-09 17:04:31.586 30560-30560/me.sunphiz.android.test.memory V/sunphiz: maxMemory:536870912 byte(512mb)

참조

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.