Android Studio 1.0 버전이 정식 릴리즈 되면서, 많은 편의성들이 강화 되었습니다.

이미 안드로이드 개발에 40%가 Eclipse , 30% 정도가 Android Studio로 개발을 하고 있고, Google 공식적으로 Eclipse ADT Plugin을 개발하지 않을 거라는 이야기에 이미 대세는 Android Studio로 넘어갔다고 볼수 있습니다.

제가 오랫동안 Android Studio로 넘어가지 못한 이유중에 하나인 MAT (Memory Analyzer) 가 크게 작동을 하였는데요.  1.0을 설치하고 모든 개발 환경을 Android Studio로 이관중  Heam Dump 분석에 문제가 생겼습니다.

MAT 화면

안드로이드 개발시 가장 많이 만나는 두가지 크래시인 NPE 와 OOM중 Out Of Memory를 잡기 위해 사용하는 유일한 도구라 할수 있는  MAT가 Android Studio에서 만든 hprof (heam dump) 파일을 분석하지 못하는 문제가 발생한 것입니다.  (Eclipse 같은 경우는  dump만 뜨면 자동으로 MAT를 뛰우며 분석 화면을 뛰워줍니다.)

계속 읽기

안드로이드에서 종종 만나는 문제가   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를 제대로 활용할수 잇고,  그 문제에 대한 해결책을 찾아갈수 있습니다.

계속 읽기