共分为4种,强弱软徐
强引用
直接使用 new 创建的对象。当触发 GC 时,只要是垃圾就回收
软引用
当触发 GC 时,与是否是垃圾对象无关,意味着不管是不是垃圾对象都不会被回收,只有当内存不足时才回收(内存缓存场景)
Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null; // 使对象只被软引用关联
Object sfObj = sf.get(); // 使用这个对象
弱引用
当触发 GC 就回收,不管是否是垃圾,也不管内存是否够用
Object obj = new Object();
WeakReference<Object> wf = new WeakReference<Object>(obj);
obj = null; // 使对象只被软弱用关联
Object wfObj = wf.get(); // 使用这个对象
虚引用
ReferenceQueue queue = new ReferenceQueue();
// 创建一个对象的虚引用,传入 ReferenceQueue
PhantomReference<byte[]> reference = new PhantomReference<byte[]>(new byte[1], queue);
// 获取到的值是 null!当发生 GC 时,虚引用对象会被回收,这时才能拿到对象(有啥用?)
System.out.println(reference.get());
标签:obj,java,对象,Object,GC,引用,类型,new
From: https://www.cnblogs.com/hangychn/p/17318115.html