弱,强引用和垃圾收集

时间:2017-02-01 07:15:00

标签: java android garbage-collection weak-references strong-references

我有两种情况:

  1. 当一个对象(只有强引用)丢失所有强引用时,它就可用于垃圾回收。
  2. 当对象只有弱引用时,它也可用于垃圾回收。
  3. 在什么情况下会更快地收集对象?或者没有区别?

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

1 个答案:

答案 0 :(得分:2)

为什么会这么重要?

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

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

含义:如果你对X使用弱引用;这仍然意味着其他强大的"引用可能存在。只有当引用消失时,该对象才有资格。

关键点是:只会收集符合条件的对象。他们历史导致他们符合条件并不重要。