强引用 软引用 弱引用 虚引用
2018-09-06 本文已影响0人
提丶米
强引用
- 通常用new出来的对象就是我们所谓的强引用
软引用
- 非必须引用,内存溢出之前进行回收。
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;
sf.get();//有时候会返回null
弱引用
- 第二次垃圾回收时回收,弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null;
wf.get();//有时候会返回null
虚引用
- 垃圾回收时回收,无法通过引用取到对象值,虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
Object obj = new Object();
PhantomReference<Object> pf = new PhantomReference<Object>(obj);
obj=null;
pf.get();//永远返回null