java的引用类型
强引用(StrongReference) 软引用(SoftReference) 弱引用(WeakReference) 虚引用(PhantomReference)
强引用(StrongReference)
开发中最常用的引用类型,GC不会回收该类型的实例对象。
软引用(SoftReference)
如果一个对象只有软引用,当内存不足的时候,GC会回收该对象。
Object softReferencObj = new Object(); SoftReference<Object> softReference = new SoftReference<Object>(softReferencObj);
使用场景: 缓存的图片信息,可以使用软引用,内存不足时自动清理
弱引用(WeakReference)
如果一个对象只有弱引用,当JVN触发GC时,就会回收该对象,不会有内存的限制。 Object weakReferenceObj = new Object(); WeakReference<Object> weakReference = new WeakReference<Object>(weakReferenceObj);
虚引用(PhantomReference)
如果一个对象只有虚引用,GC在任意时刻都会回收该对象
Object padReferenceObj = new Object(); ReferenceQueue queue = new ReferenceQueue(); PhantomReference<Object> pf = new PhantomReference<Object>(padReferenceObj, queue);