弱引用的使用
如果一个类B,可能会长期持有一个生命周期比较短的对象a的引用,
那么如果在需要回收短命对象A时候,会因为B类持有a对象的引用,而阻止a对象被回收。
这种情况会造成内存泄漏。
那么最好的解决办法就是使用弱引用
WeakReference aReference = new WeakReference(a);
++aReference就是一个弱引用++
即使B类持有aReference,也不会阻止系统对a对象的回收!
如何用弱引用使用A对象?
if (aReference != null) {
A a = AReference.get();
if (a != null) {
a.doSomething();
}
}
进行两次判断,先判断弱引用是否为空,
不为空,则从若引用中取出强引用,
在判断强引用是否为空,
不为空,则可以正常使用
这个取出的强引用最好只作为局部变量。