再回首Java第十六天

对象的软弱和虚引用
对于大部分对象而言,程序里会有一个引用变量引用该对象,这种引用方式是最常见的引用方式。除此之外,java.lang.ref包下提供了三个类:SoftReference、PhantomReference和WeakReference,它们分别代表了系统对对象的三种引用方式:软引用、虚引用和弱引用。因此,java语言对象的引用有如下四种:
强引用(StrongReference)
这是Java程序中最常见的引用方式,程序创建一个对象,并把这个对象赋值给一个引用变量。程序通过该引用变量来操作实际的对象。当一个对象被一个或一个以上的引用变量引用时,它处于激活状态,不可能被系统的垃圾回收机制回收。
软引用(SoftReference)
软引用需要通过SoftReference类来实现,当对象只有一个软引用时,它有可能垃圾回收机制回收。对于只有软引用的对象而言,当系统内存足够的时候,垃圾回收机制不会回收它;当系统内存不足时,系统将会回收它。软引用通常用于对内存敏感的程序中。
弱引用(WeakReference)
弱引用需要通过WeakReference类来实现,弱引用和软引用很像,但弱引用的级别更低。对于只有弱引用的对象而言,只要垃圾回收机制启动时,不管系统内存是否足够,总会回收该对象所占用的内存。当然也不是说,它就会立即被回收正如那些失去所有引用的对象,必须等到垃圾回收机制运行时才会被回收。
虚引用(PhantomReference)
虚引用通过PhantomReference 类来实现,虚引用类似没有引用。虚引用对对象本身没有太大影响,对象甚至感觉不到它的存在。如果一个对象只有虚引用,那它和没有引用大致相同。虚引用主要用于跟踪对象被垃圾回收的状态,虚引用不能单独使用,虚引用必须和引用队列联合使用(ReferenceQueue)
以三个引用类都包含了一个get方法用于获取所引用的对象

原文地址:https://www.cnblogs.com/Mrxiaolong/p/5419446.html