Android中的垃圾收集器是怎样使用的?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我见过很多Android的答案,建议在某些情况下调用垃圾收集器。

在进行内存耗尽操作之前在Android中请求垃圾回收器是否是一种很好的做法?如果不是,我是否应该只在发生OutOfMemory错误时致电?

提问于
用户回答回答于

对于3.0之前的版本honeycomb:是的,请致电 System.gc()

我试图创建Bitmaps,但总是得到“虚拟机内存不足错误”。但是,当我System.gc()第一次打电话时,这没问题。

在创建位图时,Android通常会因内存不足错误而失败,并且不会首先尝试进行垃圾收集。因此,呼叫System.gc(),并且你有足够的内存来创建位图。

用户回答回答于

一般来说,在存在垃圾回收器的情况下,手动调用GC 永远不是好习惯。GC是围绕启发式算法组织的,当离开自己的设备时,这些启发式算法效果最好。手动调用GC通常会降低性能。

偶尔,在一些比较罕见的情况下,人们可能会发现特定的GC错误,然后手动调用GC可能会改善性能,从而提高性能。这是因为不可能实现一个“完美”的GC,它将在所有情况下优化管理内存。这种情况很难预测,并取决于许多细微的实施细节。“好的做法”是让GC自行运行; 对GC的手动呼叫是例外情况,只有在实际性能问题得到适当证实后才能设想。

扫码关注云+社区