wf.isEnQueued();//返回是否被垃圾回收器标记为即将回收的垃圾
弱引⽤是在第⼆次垃圾回收时回收,短时间内通过弱引⽤取对应的数
据,可以取到,当执⾏过第⼆次垃圾回收时,将返回null。
弱引⽤主要⽤于监控对象是否已经被垃圾回收器标记为即将回收的垃
圾,可以通过弱引⽤的isEnQueued⽅法返回对象是否被垃圾回收器
4、 虚引⽤(幽灵/幻影引⽤),垃圾回收时回收,⽆法通过引⽤取到对象
值,可以通过如下代码实现
Object obj = new Object();
PhantomReference<Object> pf =new PhantomReference<Object>(obj);
obj=null;
pf.get();//永远返回null
pf.isEnQueued();//返回从内存中已经删除
虚引⽤是每次垃圾回收的时候都会被回收,通过虚引⽤的get⽅法永远获
取到的数据为null,因此也被成为幽灵引⽤。
虚引⽤主要⽤于检测对象是否已经从内存中删除。
⼀基本垃圾回收算法
1. 引⽤计数(Reference Counting)
⽐较古⽼的回收算法。注意不是类相互之间的引⽤,⽽是对象被引⽤的
数⽬!垃圾回收时,只⽤收集计数为0的对象。此算法最致命的是⽆法处
理循环引⽤的问题。
- 当创建了⼀个对象并把指向该对象的引⽤赋给⼀个变量时,这个对
象的引⽤计数器就被置为1。
- 当对象的引⽤被赋给任意变量时,该对象的引⽤计数器加1。