안드로이드 개발 질문/답변
(글 수 45,052)
11-12 16:07:31.168: ERROR/AndroidRuntime(21685): Uncaught handler: thread main exiting due to uncaught exception
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:271)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:296)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.shinhancard.townmap.SPCGroupTabView$9$2.run(SPCGroupTabView.java:576)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Handler.handleCallback(Handler.java:587)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Handler.dispatchMessage(Handler.java:92)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Looper.loop(Looper.java:123)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at java.lang.reflect.Method.invokeNative(Native Method)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at java.lang.reflect.Method.invoke(Method.java:521)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at dalvik.system.NativeStart.main(Native Method)
*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
리사이클사용을 했는데도저렇게 나오네요...
대체할수있는 방법같은게 있을까요?
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:271)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:296)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.shinhancard.townmap.SPCGroupTabView$9$2.run(SPCGroupTabView.java:576)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Handler.handleCallback(Handler.java:587)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Handler.dispatchMessage(Handler.java:92)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.os.Looper.loop(Looper.java:123)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at android.app.ActivityThread.main(ActivityThread.java:4363)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at java.lang.reflect.Method.invokeNative(Native Method)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at java.lang.reflect.Method.invoke(Method.java:521)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
11-12 16:07:31.293: ERROR/AndroidRuntime(21685): at dalvik.system.NativeStart.main(Native Method)
*------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*
리사이클사용을 했는데도저렇게 나오네요...
대체할수있는 방법같은게 있을까요?
2010.11.12 17:48:53
이미지는 12장정도 로딩하는거같습니다.
총 용량은 2MB는 안되고요
이것저것찾아보니 메모리 일수도있고 작업이 끝나지 않은상태에서 또작업을 했을경우에 메모리 할당을 받지못해서 걸릴수도있더군요
문제는 겔럭시S,HTC디자이어에선 죽지안습니다.
겔럭시 A서 죽어버리고요.
제개인폰(옵티므스Z)에서는 더잘죽네요
약간에 부과설명은 BitmapFactory.decodeFile(변수)를 받는 비트맵객체변수가 스태틱으로 되어있습니다
물론 리사이클을 해주고있구요....
솔찍히 막들이대서 해볼건 거진다해봤는데 답이좀없어보이네요;;
(사실제자 만든건아닌데 강압적으로 하게되었습니닥..ㅜ.ㅜ)
2010.11.12 16:22:07
이미지가 큰 파일을 여는 것은 아닌가요?
그렇다면 이미지를 리사이징해서 로드해주시면되구요
아니라면 다른 리소스를 사용하는 변수들을 사용후 바로바로 환원해주시면 됩니다.
2011.02.11 02:29:51
OutOfMemoryError bitmap size exceeds VM budget 관련해서 정리한 글입니다. http://www.androidpub.com/1282821 참고하세요




메모리릭은 여러가지 원인이 있을수 있습니다.
물론 비트맵 관리의 실수일수도 있고,
다른데서 메모리 줄줄 새는데 비트맵이 열릴때 죽어서 저렇게 나오는 케이스도 봤습니다. ㅡㅡㅋ
대략적인 설명정도는 첨부해야 하지 않을까요?
한번에 로드하는 이미지는 크기가 얼마나 되고 몇장씩 로드한다던가...