【问题标题】:Android Bitmap recycle question, do I need to maintain all the references of Bitmap, to call recycle method?Android Bitmap 回收问题,是否需要维护 Bitmap 的所有引用,才能调用回收方法?
【发布时间】:2011-07-16 06:57:43
【问题描述】:

我们经常从服务器获取图像作为字节流,然后我们创建 Bitmap 并将其分配给 ImageView 对象。

当我需要释放内存时,我可以将所有 ImageView 引用删除为 null,让 gc 完成工作。

但是问题是,这样,我没有调用Bitmap的recycle方法,因为我没有保留它的引用。所以我想知道,我是否需要维护Bitmap的所有引用,以便将来回收它们?

【问题讨论】:

    标签: android bitmap


    【解决方案1】:

    不用,GC 会帮你做的。

    【讨论】:

    • 对不起,如果你提到了,为什么会有回收方法?我可以简单地删除对 null 的引用,让 GC 回收它。
    • recycle() 如果您经常操作大型位图并且需要尽快释放它们的内存,则可以使用。在正常的应用程序中,大多数时候这是不必要的。
    • @RomainGuy 但是位图是在本机堆中分配的,GC 将如何获取它们?
    • 当 Bitmap 对象被 GC 回收时,它会运行本机代码来清理其本机内存。请注意,从 Android 3.0 开始,位图在 Dalvik 的堆上分配它们的数据。
    【解决方案2】:

    最好这样做,因为 Bitmap 对象本身不适合 GC(因为内存分配在本机堆中)。

    您还应该在使用新的之前回收您的 ImageView 位图

    Recycle ImageView's Bitmap

    【讨论】:

      猜你喜欢
      • 2019-09-05
      • 2011-10-23
      • 2012-10-05
      • 2016-05-24
      • 2023-03-19
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多