Ref: http://blog.youkuaiyun.com/zhangzhaokun/article/details/5083415
BAD!
obj = wr.get();
if (obj == null)
{
wr= new WeakReference(recreateIt()); //1
obj= wr.get(); //2
}
//code that works with obj
行1之后,行2之前,有可能运行垃圾回收。若在行1之后执行了垃圾回收,通过recreateIt()创建的对象被回收,则行2中获得的对象将为null。
GOOD!
obj = wr.get();
if (obj == null)
{
obj= recreateIt(); //1
wr= new WeakReference(obj); //2
}
//code that works with obj
本文探讨了在Java中使用弱引用(WeakReference)时,如何避免对象因垃圾回收而丢失的问题。通过示例代码说明,在执行垃圾回收后,如何确保对象仍然可用,以及弱引用在管理内存资源时的作用。
1万+

被折叠的 条评论
为什么被折叠?



