首页 文章

android内存泄漏

提问于
浏览
3

我一直在阅读Android中的内存泄漏 . 在我的应用程序中,我得到了 java.lang.OutOfMemoryError: bitmap size exceeds VM budget 异常 . 当我用Google搜索它时,我发现这是一个常见的错误(this SO questionthis SO question处理问题)并且我使用了建议的解决方案 .
我找到了一个处理这个问题的官员_26154445_解释了官方的例子 . 它在示例中说:

drawable引用了TextView,它本身对活动(Context)有一个引用,它反过来引用了几乎任何东西 .

我仍然没有声明为静态,为什么不是't it destroyed in activity' s onDestroy() 方法? Drawable被破坏,TextView被破坏,Activity被销毁 - 没有引用也没有内存泄漏 . 不是它应该如何工作?

1 回答

  • 2

    我仍然不明白一件事:如果Drawable未被声明为静态,为什么它不会在activity的onDestroy()方法中被销毁? Drawable被破坏,TextView被破坏,Activity被销毁 - 没有引用也没有内存泄漏 . 不是它应该如何工作?

    是的,这就是它应该如何工作但它们可能不会立即在_2615450中被销毁 . 垃圾收集器运行的确切时间无法预测 . 有许多事情会引发这种情况 . 例如,如果您的应用程序在允许的堆内存上运行不足,或者某些其他应用程序试图分配更多内存...

    如果你想立即销毁你的位图,你应该调用 Bitmap.recycle() .

    本视频中解释了GC如何运行以及有关android中内存管理的许多其他有用信息:

    http://www.youtube.com/watch?v=_CruQY55HOk

相关问题