【发布时间】:2016-02-01 10:25:03
【问题描述】:
由于垃圾收集器使用 Mark-Sweep 算法:
实际的 GC 是使用 Mark-Sweep 算法完成的。这个做完了 使用位向量来跟踪最初可到达的对象 将根对象标记为可达。然后 GC 对 堆中的对象按地址顺序标记。对于每个可达 它扫过的对象 它标记从该对象可到达的所有对象 作为可达。如果新对象具有较低的地址,则将其添加到 工作队列。在初始扫描之后,工作队列是
所以它会通过每个对根有引用的对象,并且每个其他对象都会被收集。在任何情况下,在 Activity 上放置对 null 的引用是有用的吗?
穿上onDestroy 我认为没有优势对吗?
在“繁重”活动中将onPause(在验证isFinishing 之后)上的它们设置为null 怎么样。它会帮助更快地收集资源吗?
【问题讨论】:
-
您可以查看以下链接,它传达了您正在寻找的内容stackoverflow.com/questions/850878/…
-
当系统真的说它需要它时,为什么不从它的进程中删除不需要的内存呢?见
Activity#onTrimMemory -
@pskink 这不完全是用例。我说的是一个用例,当您有大量内存活动(ies)并且您出于任何原因销毁它(移动到另一个,旋转......)时,您希望它尽快成为 GC。
-
如果您需要立即进行 GCd 处理,可能值得先了解一下为什么需要这么多内存。这几乎总是与位图相关,如果是这样,请查看developer.android.com/training/displaying-bitmaps/…
-
@Dori 这不是我当前遇到的问题,它只是一个理论上的用例,我认为了解最佳实践很有用.. 首先避免出现此类问题 :-)
标签: android garbage-collection