虚引用

虚引用 是Java语言中的一种引用方式，在虚引用中，内存可以被回收。 虚引用是 Java语言中提供的非强引用的一种；其他两种分别是弱引用 和 软引用。 虚引用是Java语言中最弱的一种引用。

在Java 8和早期版本中，finalize后的对象需要对应的软应用被回收后才可以被回收。 Java 9 中允许finalize后的引用对象被立即回收。

用例 
虚引用的应用场景，主要是少量的技术上的使用， 主要用来跟踪对象被垃圾回收器回收的活动。首先，它可以用来代替 finalize 方法，保证对象在finalize时不会复活（resurrect）。 这允许对象在一个周期内完成垃圾回收，而不需要等待下一个垃圾回收周期以确保它没有复活。 第二个用途是来检测对象被回收的具体时间(通过与 ReferenceQueue 对象配合使用)，确保其内存空间可用，例如延迟给新的对象分配内存(例如很大的图片)，直到以前的内存被释放。

参见 

 Ephemeron
 弱引用
 软引用
 循环引用

参考文献 

数据类型
記憶體管理
程序架構
有未审阅翻译的页面