弱引用、强引用和垃圾回收

Weak, strong references and garbage collection

我有两种情况:

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

什么情况下对象回收速度会更快?还是没有区别?

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

为什么这很重要?

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

除此之外:在很多情况下你无法区分你的两种情况。

意思是:如果你对X使用弱引用;这仍然意味着可能存在其他 "strong" 引用。只有当那些 strong 引用消失时,该对象才符合条件。

重点是:只有符合条件的对象才会被收集。他们的 历史 导致他们 符合条件 根本不重要。