我一直在阅读Android中的内存泄漏 . 在我的应用程序中,我得到了 java.lang.OutOfMemoryError: bitmap size exceeds VM budget
异常 . 当我用Google搜索它时,我发现这是一个常见的错误(this SO question和this SO question处理问题)并且我使用了建议的解决方案 .
我找到了一个处理这个问题的官员_26154445_解释了官方的例子 . 它在示例中说:
drawable引用了TextView,它本身对活动(Context)有一个引用,它反过来引用了几乎任何东西 .
我仍然没有声明为静态,为什么不是't it destroyed in activity' s onDestroy()
方法? Drawable被破坏,TextView被破坏,Activity被销毁 - 没有引用也没有内存泄漏 . 不是它应该如何工作?
1 回答
是的,这就是它应该如何工作但它们可能不会立即在_2615450中被销毁 . 垃圾收集器运行的确切时间无法预测 . 有许多事情会引发这种情况 . 例如,如果您的应用程序在允许的堆内存上运行不足,或者某些其他应用程序试图分配更多内存...
如果你想立即销毁你的位图,你应该调用
Bitmap.recycle()
.本视频中解释了GC如何运行以及有关android中内存管理的许多其他有用信息:
http://www.youtube.com/watch?v=_CruQY55HOk