안드로이드에서 종종 만나는 문제가   NullPointer Exception이며 또 하나는 OOM (Out Of Memory) 입니다. Crash Report 서비스인 UrQA ( http://www.urqa.io) 를 운영하면서 많은 문제들을 볼수 있습니다. 하지만 위 두 문제는 모든 앱이 다 겪고 있는 문제죠. (현재 URQA는 300개가 넘는 업체가 사용하고 있으며, 안드로이드 뿐만 아니라 곧 iOS, Unity, JS를 지원하게 됩니다. 내부 테스트 중입니다)

 

이러한 문제를 어떻게 해결할까? 에 대해 해당 디바이스를 직접 구하지 않는 한 답은 없지만, 개발자 선에서 해결할수 있는 방법이 Profiler가 아닐까 생각이 듭니다. 하지만 안드로이드 Profiler는 처음 접하기에 러닝 커브가 좀 있고,  이것들을 어떻게 활용하는지 많은 분들이 잘 모릅니다.

또한 안드로이드 OOM (Out of Memory)의 주 원인인 BITMAP. 이것을 어떻게 다루는 것이 좋은지 안드로이드 개발자 사이트에 있으나, 그 밑단에 많은 개념들을 숙지하고 있어야 합니다.

  • JVM과 다른 Dalvik 의 메모리 관리 기법
  • 다양한 Reference를 사용하여, Garbage Collection 시 불 필요한 리소스를  빠르게 수거하는 방법
  • 그리고 Heap Dump를 이해하기 위해 MAT라는 툴을 사용해야 하는데 보는 방법

이 외에도 많은 숨겨진 지식들이 있어야 Profiler를 제대로 활용할수 잇고,  그 문제에 대한 해결책을 찾아갈수 있습니다.

곧 ART가 나오고 ROSalloc 이 나오면서, 메모리 체계, Garbage Collection 의 여러 개선 방향이 나오지만,  우리는 항상 Legacy와 싸워야 합니다.    이 자료가 많은 안드로이드 개발자에게 도움이 되길 바라며, 공유를 합니다.

이 자료는 만드는 데 2개월 가량  저랑 토론하고 몇번을 변경하고 고생한 NHN NEXT의 이영남 학생에게 깊은 감사를 표합니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

카테고리

Android, News

태그

, , , , , , ,