android - 比较 b/w bitmap.recycle() 和 bitmap=null

标签 android bitmap out-of-memory

我在使用 for 循环下载一组图像并将其转换为位图图像的情况下。因此,为了避免 OutOfMemory 错误,我正在尝试回收位图。但不幸的是,我遇到了另一个异常,说的是 “View trying to use a recycled bitmap”

但我仍然可以使用 bitmap=null 使已使用的位图为空。所以我的问题是,让我的位图 null 会帮助我释放已用内存吗?或者我应该在代码的其他部分提供 bitmap.recycle() 吗?

最佳答案

调用 recycle() 向系统表明您已完成使用该资源,并且系统现在可以释放它正在使用的非托管内存。一旦您以这种方式处理了资源,它的行为通常是不确定的(人们会合理地期望它不再工作)。

之后将引用设置为 null 有两个好处:

  • 当您尝试使用它们时,您将不会有对不起作用的对象的陈旧引用
  • 垃圾收集器将知道清理位图对象的托管端,释放更多内存

关于android - 比较 b/w bitmap.recycle() 和 bitmap=null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260787/

相关文章:

java - Spark 驱动程序出现 OutOfMemoryError - 配置 10Gb 时堆转储 1Gb

Android 解析主机

java - 线程 "main"java.lang.NoClassDefFoundError : junit/textui/ResultPrinter 中的异常

java - 调整位图大小

android - 使用矩阵旋转位图

android - 避免内存不足错误的最佳方法 - Android

java - Java 中的大矩阵

android - 两列布局,第一列 wrap_content,第二列 fill_parent

java - 在 recyclerView 中滚动时如何保持复选框状态?

Android - 在将位图保存到结果 Activity 中的 SDCARD 之前压缩位图