Java中一共有4种引用类型(其实还有一些其他的引用类型比如FinalReference):强引用、软引用、弱引用、虚引用。其中强引用就是我们经常使用的Object a = new Object(); 这样的形式,在Java中并没有对应的Reference类。济南达内培训负责整理 本篇文章主要是分析软引用、弱引用、虚引用的实现,这三种引用类型都是继承于Reference这个类,主要逻辑也在Reference中。 更多文章见个人博客:https://github.com/farmerjohngit/myblog 问题 在分析前,先抛几个问题? 1.网上大多数文章对于软引用的介绍是:在内存不足的时候才会被回收,那内存不足是怎么定义的?什么才叫内存不足? 2.网上大多数文章对于虚引用的介绍是:形同虚设,虚引用并不会决定对象的生命周期。主要用来跟踪对象被垃圾回收器回收的活动。真的是这样吗? 3.虚引用在Jdk中有哪些场景下用到了呢? Reference 我们先看下Reference.java中的几个字段 public abstract class Reference<T> { //引用的对象 private T referent;
Java中一共有4种引用类型(其实还有一些其他的引用类型比如FinalReference):强引用、软引用、弱引用、虚引用。其中强引用就是我们经常使用的Object a = new Object(); 这样的形式,在Java中并没有对应的Reference类。济南达内培训负责整理 本篇文章主要是分析软引用、弱引用、虚引用的实现,这三种引用类型都是继承于Reference这个类,主要逻辑也在Reference中。 更多文章见个人博客:https://github.com/farmerjohngit/myblog 问题 在分析前,先抛几个问题? 1.网上大多数文章对于软引用的介绍是:在内存不足的时候才会被回收,那内存不足是怎么定义的?什么才叫内存不足? 2.网上大多数文章对于虚引用的介绍是:形同虚设,虚引用并不会决定对象的生命周期。主要用来跟踪对象被垃圾回收器回收的活动。真的是这样吗? 3.虚引用在Jdk中有哪些场景下用到了呢? Reference 我们先看下Reference.java中的几个字段 public abstract class Reference<T> { //引用的对象 private T referent;