1. 定义
Java四种引用包括强引用,软引用,弱引用,虚引用.
1.1 强引用
只要引用存在,垃圾回收器永远不会回收.
1 | Object obj = new Object(); |
1.2 软引用
非必须引用,内存溢出之前进行回收,可以通过以下代码实现
1 | Object obj = new Object(); |
软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据.
1.3 弱引用
第二次垃圾回收时回收,可以通过如下代码实现
1 | Object obj = new Object(); |
弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记.
1.4 虚引用
垃圾回收时回收,无法通过引用取到对象值,可以通过如下代码实现
1 | Object obj = new Object(); |
虚引用是每次垃圾回收的时候都会被回收,通过虚引用的get方法永远获取到的数据为null,因此也被成为幽灵引用.虚引用主要用于检测对象是否已经从内存中删除.