2011-06-28 133 views
-1

我正在开发一个处理缓存中存储大量图像的应用程序,我经常遇到类似内存不足的错误。任何人都可以提出一个方法来解决这个问题android内存泄露

错误日志

Report of logcat : 

06-27 19:41:16.425: ERROR/AndroidRuntime(13965): FATAL EXCEPTION: main 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:450) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:326) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.content.res.Resources.loadDrawable(Resources.java:1709) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.content.res.Resources.getDrawable(Resources.java:581) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.view.View.setBackgroundResource(View.java:7533) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at com.lht.icruise.activity.shipdetails.ShipDetailsActivity.onCreate(ShipDetailsActivity.java:99) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.os.Looper.loop(Looper.java:123) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-27 19:41:16.425: ERROR/AndroidRuntime(13965):  at dalvik.system.NativeStart.main(Native Method) 
+0

MOre details?错误消息,代码等... – FerranB

+1

请从发生OutOfMemoryError的位置发布堆栈跟踪 – sparkymat

+0

其中一个错误: –

回答

1

如果您在使用大位图,回收位图以释放内存使用再循环()方法的位图时的位图不再被使用,可能会帮助你。

+0

作为替代(不太优雅),他可以使用'System.cmc()'来释放内存。 – piotrpo