引用
引用在java中的表示就是一个reference类型的数据中存储的数值代表的是另一块内存的起始地址,就称这块内存代表着一个引用。 分为强引用,软引用,弱引用,虚引用 引用强度依次减弱!
1.强引用
强引用就是代码中普遍存在的,类似Object obj = new Object() 这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。
2.软引用
软引用用来描述一些还有用,但是非必需的对象,对于软引用关联的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围之内并进行第二次回收。如果这次回收还是没有足够的内存,才会抛出内存溢出异常,java提供了SoftReference类来实现软引用。
3.弱引用
弱引用也是用来描述非必需的对象,但是它的强度要比软引用更弱一些,对弱引用关联的对象只能生存到下一次垃圾回收之前。当垃圾收集器工作的时候,无论当前内存是否充足,都会回收掉纸杯弱引用关联的对象。Java提供WeakReference类来实现弱引用。
4.虚引用
虚引用也成为幽灵引用或者幻影引用。它是最弱的一种引用关系。一个对象是否又虚引用存在,完全不会关系到其生存时间。也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是希望能够在被垃圾收集器回收的时候获取到一个通知。Java提供了PhantomReference实现虚引用
转载请注明原文地址: https://ju.6miu.com/read-500410.html