어플에 맵을 사용하는 부분이 있어 맵액티비티에 들어가는데
맵에서 이동이나 줌 인/아웃을 여러번 하면 메모리 에러가 나서 죽습니다...
검색 결과 어플에서 메모리를 많이 사용해서 그런다고 해서 릭 열심히 잡아서 릭은 거의 사라졌거든요..
그런데도 맵에서는 계속 메모리 에러가 납니다...
갤러리를 사용하는 부분이 있어서 갤러리에 진입해서 이미지 가져오거나 작업 한 후 에 맵에 들어가면 갤러리가 먼저
죽었다는 메세지를 날리고 메모리 에러가 나네요...
맵에 진입 전 onPause에서 사용하는 비트맵은 모두 리사이클 시킵니다... 그런데도 계속 메모리 에러...
10-18 01:18:17.004: INFO/ActivityManager(58): Process com.android.gallery (pid 1847) has died.
이와같이 갤러리 죽었다는 로그캣 나오고 다음에
10-18 01:18:24.113: ERROR/dalvikvm-heap(1746): 65536-byte external allocation too large for this process.
10-18 01:18:24.123: ERROR/(1746): VM won't let us allocate 65536 bytes
10-18 01:18:24.133: WARN/System.err(1746): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
10-18 01:18:24.154: WARN/System.err(1746): at android.graphics.Bitmap.nativeCreate(Native Method)
10-18 01:18:24.154: WARN/System.err(1746): at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
10-18 01:18:24.154: WARN/System.err(1746): at com.google.common.graphics.android.AndroidImage.<init>(Unknown Source)
10-18 01:18:24.154: WARN/System.err(1746): at com.google.common.graphics.android.AndroidImage.<init>(Unknown Source)
10-18 01:18:24.164: WARN/System.err(1746): at com.google.common.graphics.android.AndroidImageFactory.createImage(Unknown Source)
10-18 01:18:24.164: WARN/System.err(1746): at com.google.googlenav.map.MapService.createScaledImage(Unknown Source)
10-18 01:18:24.164: WARN/System.err(1746): at com.google.googlenav.map.MapService.createScaledImage(Unknown Source)
10-18 01:18:24.164: WARN/System.err(1746): at com.google.googlenav.map.MapService.getScaledImage(Unknown Source)
10-18 01:18:24.164: WARN/System.err(1746): at com.google.googlenav.map.MapService.getTile(Unknown Source)
10-18 01:18:24.174: WARN/System.err(1746): at com.google.googlenav.map.Map.drawTile(Unknown Source)
10-18 01:18:24.174: WARN/System.err(1746): at com.google.googlenav.map.Map.drawMapBackground(Unknown Source)
10-18 01:18:24.174: WARN/System.err(1746): at com.google.googlenav.map.Map.drawMap(Unknown Source)
10-18 01:18:24.174: WARN/System.err(1746): at com.google.android.maps.MapView.drawMap(MapView.java:1029)
10-18 01:18:24.174: WARN/System.err(1746): at com.google.android.maps.MapView.onDraw(MapView.java:468)
10-18 01:18:24.184: WARN/System.err(1746): at android.view.View.draw(View.java:6535)
10-18 01:18:24.184: WARN/System.err(1746): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
10-18 01:18:24.184: WARN/System.err(1746): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
10-18 01:18:24.184: WARN/System.err(1746): at android.view.View.draw(View.java:6538)
10-18 01:18:24.193: WARN/System.err(1746): at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
10-18 01:18:24.193: WARN/System.err(1746): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
10-18 01:18:24.193: WARN/System.err(1746): at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
10-18 01:18:24.193: WARN/System.err(1746): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
10-18 01:18:24.193: WARN/System.err(1746): at android.view.View.draw(View.java:6538)
10-18 01:18:24.193: WARN/System.err(1746): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-18 01:18:24.203: WARN/System.err(1746): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
10-18 01:18:24.203: WARN/System.err(1746): at android.view.ViewRoot.draw(ViewRoot.java:1349)
10-18 01:18:24.203: WARN/System.err(1746): at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
10-18 01:18:24.203: WARN/System.err(1746): at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
10-18 01:18:24.203: WARN/System.err(1746): at android.os.Handler.dispatchMessage(Handler.java:99)
10-18 01:18:24.203: WARN/System.err(1746): at android.os.Looper.loop(Looper.java:123)
10-18 01:18:24.213: WARN/System.err(1746): at android.app.ActivityThread.main(ActivityThread.java:4363)
10-18 01:18:24.213: WARN/System.err(1746): at java.lang.reflect.Method.invokeNative(Native Method)
10-18 01:18:24.213: WARN/System.err(1746): at java.lang.reflect.Method.invoke(Method.java:521)
10-18 01:18:24.213: WARN/System.err(1746): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
10-18 01:18:24.213: WARN/System.err(1746): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
10-18 01:18:24.213: WARN/System.err(1746): at dalvik.system.NativeStart.main(Native Method)
10-18 01:18:24.664: ERROR/dalvikvm-heap(1746): 16384-byte external allocation too large for this process.
10-18 01:18:24.674: ERROR/(1746): VM won't let us allocate 16384 bytes
이와 같은 로그캣 나오며 죽습니다...
혹시 다른 문제가 있을까요?ㅠㅠ
일반적으로 App의 전체 Heap 사용량이 많을때 자주 발생 하지만 App의 Heap 사용량이 적음에도 불구하고 에러가 발생하는 경우도 있었습니다.
여러 상황을 본 결과 App의 Heap사용량이 충분하더라도 한 객체가 큰 메모리를 요구할때 VM에서 메모리를 할당해주지 않는 것 같습니다.
특히 bitmap 객체에서 메모리를 많이 사용하는데 사용이 끝난 bitmap 객체를 모두 recycle해줬음에도 불구하고 에러가 난다면
아래 같은 경우에 해당되는지 의심되네요 bitmap객체를 생성할때 메모리를 많이 사용하지 않도록 bitmapoption을 주어 생성해 보심도 고려해 보세요.