Thinking in java 上提到了Reference这个抽象类,其下有三个子类:
SoftReference,WeakReference,PhantomReference.
前两个看了"Java 2 引用类使用指南"这篇文章后,基本上了解它们的应用时机了.
唯有第三个PhantomReference这个类,不知道什么情况下会用到.
望高手赐教~~~
SoftReference,WeakReference,PhantomReference.
前两个看了"Java 2 引用类使用指南"这篇文章后,基本上了解它们的应用时机了.
唯有第三个PhantomReference这个类,不知道什么情况下会用到.
望高手赐教~~~
SoftReference,WeakReference,PhantomReference
都介绍一下吧
引用类所持有的对象随时可被垃圾回收器回收。所以,在使用它们的持有对象前需要先检测
其对象是否存在。若已被回收,则新建一个。
另外,请不要让强引用去引用这个对象,那样的话该对象将不会被自动回收。
根据被回收的条件分为:
1.SoftReference(内存资源紧缺时被释放)
2.WeakReference(内存资源紧缺,或垃圾回收机制启动时被释放)
3.PhantomReference (这个类很特殊,它只关心所持有的对象是否已被回收,若被回收则将对象放入队列中。
所以,你可以在对象被回收前做些动作。)
总而言之,引用类充当了“废纸篓”的角色。当你不需要一个对象时,你可以将它放入引用类中
然后将持有这个对象的强引用设置为null. 如果下一刻你反悔了,想再找回这个对象,可以先看看
引用类中是否还存在这个对象,如果你运气很好,它还在那里,那么你还可以接着用它。否则,
你就只能新建一个了
总之,引用类给了你一个可以再次找回被抛弃了的对象的机会!以上理解,望大家指正!
对于PhantomReference这个类,还是有点模糊。
它和finalize所起的效果不是一样么?