强引用 软引用 弱引用 虚引用

强引用

  • 通常用new出来的对象就是我们所谓的强引用

软引用

  • 非必须引用,内存溢出之前进行回收。
    Object obj = new Object();
    SoftReference sf = new SoftReference(obj);
    obj = null;
    sf.get();//有时候会返回null
 
 

弱引用

  • 第二次垃圾回收时回收,弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。
    Object obj = new Object();
    WeakReference wf = new WeakReference(obj);
    obj = null;
    wf.get();//有时候会返回null
 
 

虚引用

  • 垃圾回收时回收,无法通过引用取到对象值,虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用。
    Object obj = new Object();
    PhantomReference pf = new PhantomReference(obj);
    obj=null;
    pf.get();//永远返回null
 

                            
                        
                    
                    
                    

你可能感兴趣的:(强引用 软引用 弱引用 虚引用)