1

我有两种情况:

  1. 当一个对象(只有强引用)丢失所有强引用时,它就可以用于垃圾回收了。
  2. 当对象只有弱引用时,它也可用于垃圾回收。

在什么情况下会更快地收集对象?还是没有区别?

我正在开发旧的 android 应用程序。我的前任使用弱引用(作为实例变量)将视图存储在 RecyclerView 适配器的持有者中。我想知道他为什么这样做。我有一个想法,可以通过弱引用强制GC来收集对象。我的意思是,在下一次垃圾收集中,只有对 100% 的弱引用的对象将被收集,而没有引用的对象可能不会被收集。可以这样吗?

4

1 回答 1

2

这有什么关系?

关键是:垃圾收集器开始收集合格的对象......当它“认为”它需要这样做时。换句话说:您的对象何时符合条件并不重要;重要的是当GC 开始收集时他们有资格。

除此之外:在许多情况下,您无法区分两种情况。

含义:如果您对 X 使用弱引用;这仍然意味着可能存在其他“强”引用。只有当这些引用消失时,该对象才符合条件。

关键是:只有符合条件的对象才会被收集。他们使他们符合资格的历史根本无关紧要。

于 2017-02-01T07:16:38.130 回答