我有两种情况:
- 当一个对象(只有强引用)丢失其所有强引用时,它可用于垃圾回收。
- 当对象只有弱引用时,它也可用于垃圾回收。
在什么情况下对象会收集得更快?还是没有区别?
我正在开发旧的安卓应用程序。我的前任使用弱引用(作为实例变量)将视图存储在 RecyclerView 适配器的持有者中。我想知道他为什么这样做。我有一个想法,可以是弱引用强制GC收集对象。我的意思是,在下一个垃圾收集中,只有弱引用 100% 的对象将被收集,而没有引用的对象可能不会。可以这样吗?
为什么这很重要?
关键是:垃圾回收器开始收集符合条件的对象......当它"思考"时,它被要求这样做。换句话说:您的对象何时符合条件并不重要;重要的是,当GC开始收集时,他们有资格。
除此之外:在许多情况下,您无法区分这两种情况。
意思是:如果你对X使用弱引用;这仍然意味着可能存在其他"强"引用。只有当这些强引用消失时,对象才有资格。
关键点是:只会收集符合条件的对象。他们的历史使他们有资格根本不重要。