弱引用、强引用和垃圾回收
Weak, strong references and garbage collection
我有两种情况:
- 当一个对象(只有强引用)失去所有强引用时,它就可以用于垃圾回收。
- 当对象只有弱引用时,它也可用于垃圾回收。
什么情况下对象回收速度会更快?还是没有区别?
我正在处理旧的 android 应用程序。我的前任使用弱引用(作为实例变量)将视图存储在 RecyclerView 适配器的容器中。我想知道他为什么那样做。我有一个想法,可以是弱引用强制 GC 收集对象。我的意思是,在下一次垃圾回收中,只有对 100% 的弱引用的对象将被回收,而没有引用的对象可能不会被回收。可以这样吗?
为什么这很重要?
要点是:垃圾收集器开始收集 符合条件的 对象...当它 "thinks" 需要这样做时。换句话说:何时 您的对象符合条件并不重要;重要的是 当 GC 开始收集时它们有资格。
除此之外:在很多情况下你无法区分你的两种情况。
意思是:如果你对X使用弱引用;这仍然意味着可能存在其他 "strong" 引用。只有当那些 strong 引用消失时,该对象才符合条件。
重点是:只有符合条件的对象才会被收集。他们的 历史 导致他们 符合条件 根本不重要。
我有两种情况:
- 当一个对象(只有强引用)失去所有强引用时,它就可以用于垃圾回收。
- 当对象只有弱引用时,它也可用于垃圾回收。
什么情况下对象回收速度会更快?还是没有区别?
我正在处理旧的 android 应用程序。我的前任使用弱引用(作为实例变量)将视图存储在 RecyclerView 适配器的容器中。我想知道他为什么那样做。我有一个想法,可以是弱引用强制 GC 收集对象。我的意思是,在下一次垃圾回收中,只有对 100% 的弱引用的对象将被回收,而没有引用的对象可能不会被回收。可以这样吗?
为什么这很重要?
要点是:垃圾收集器开始收集 符合条件的 对象...当它 "thinks" 需要这样做时。换句话说:何时 您的对象符合条件并不重要;重要的是 当 GC 开始收集时它们有资格。
除此之外:在很多情况下你无法区分你的两种情况。
意思是:如果你对X使用弱引用;这仍然意味着可能存在其他 "strong" 引用。只有当那些 strong 引用消失时,该对象才符合条件。
重点是:只有符合条件的对象才会被收集。他们的 历史 导致他们 符合条件 根本不重要。