안드로이드 개발 질문/답변
(글 수 45,052)
로그캣 에러인데여 가상머신 싸이즈땜에 생기는 문제인거같습니다.
이프로그램을 설치해서 갤럭시 s에서 돌리면 이미지가 잘나옵니다 .그런데 싸이언 옵티멈에서 돌리면 이미지
가나오질 않고 응용프로그램이 예상치 않게 중지 되었습니다 라고 합니다. 이유가 먼지 모르겠습니다.
옵티멈에서 이미지가 뜨게 만들어라는 교수님의 지시인데 잘안됩니다.고수 님들 제발좀 도와주십쇼.
1-08 05:00:07.274: ERROR/AndroidRuntime(312): FATAL EXCEPTION: main
11-08 05:00:07.274: ERROR/AndroidRuntime(312): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:271)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:296)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.ireal.sc.GalleryDetailActivity.onCreate(GalleryDetailActivity.java:58)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.os.Looper.loop(Looper.java:123)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invoke(Method.java:521)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at dalvik.system.NativeStart.main(Native Method)
11-08 05:00:07.880: INFO/ActivityManager(59): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18 uiMode=17 seq=5}
이프로그램을 설치해서 갤럭시 s에서 돌리면 이미지가 잘나옵니다 .그런데 싸이언 옵티멈에서 돌리면 이미지
가나오질 않고 응용프로그램이 예상치 않게 중지 되었습니다 라고 합니다. 이유가 먼지 모르겠습니다.
옵티멈에서 이미지가 뜨게 만들어라는 교수님의 지시인데 잘안됩니다.고수 님들 제발좀 도와주십쇼.
1-08 05:00:07.274: ERROR/AndroidRuntime(312): FATAL EXCEPTION: main
11-08 05:00:07.274: ERROR/AndroidRuntime(312): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:271)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:296)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.ireal.sc.GalleryDetailActivity.onCreate(GalleryDetailActivity.java:58)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.os.Looper.loop(Looper.java:123)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invokeNative(Native Method)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at java.lang.reflect.Method.invoke(Method.java:521)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-08 05:00:07.274: ERROR/AndroidRuntime(312): at dalvik.system.NativeStart.main(Native Method)
11-08 05:00:07.880: INFO/ActivityManager(59): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=18 uiMode=17 seq=5}
2010.11.08 14:14:40
OutOfMemoryError 는 다양한 원인과 이유가 있는데. .말 그대로 메모리가 부족하다는 말입니다.
디바이스 마다 .. 또는 사용환경에 따라서 메모리가 한정되어 있죠..
모바일을 pc와 같이 생각해서 이미지라던가, 기타 리소스들을 많이 사용하거나, 또는 사용하고 해제를 제대로 안해주는 경우가 많이 있는데, 그러한 경우 잘 발생합니다.
이미지와 같은 리소스 중에 너무 큰 것이 있으면 작게 만들어서 사용해야 하고.. 양이 많다면 줄여야합니다.
그리고 메모리 해제도 제대로 잘 되는지 체크를 해보셔야 할 것 같구요^^;
갤럭시S 가 하드웨어 성능이 좋아서 잘 나오는 것 뿐이죠..
모바일의 한정된 자원 안에서 어떻게 최적화를 하는지가 앱 개발하는데 매우 중요합니다. ..
2010.11.08 14:46:43
서버에서 작게 보내줘도 되구요.. 클라에서 줄여도 됩니다.
클라에서 줄일라면 decode 하기 전에 이미지를 줄여서 사용해야겠지요..http://www.androidpub.com/945244#7 참고하세요^^;
이미지 로드를 안하고 파일 사이즈를 줄이는 방법이 있습니다..



