文章目录
1 四种引用类型
Java将引用分为强引用(Strongly Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)4种类型,每种引用强度依次逐渐减弱。
1.1 强引用
强引用即普遍意义上的引用,比如:Object o = new Object(),这里o就是一个强引用,只要这个引用关系存在,对象永远不会被回收,即使内存不足,JVM只会抛出OOM异常。
1.2 软引用
软引用用来指向一些后续可能会使用到但并非必须存在的对象,比如创建一个软引用:new SoftReference<>(new ArrayList<>()),这个软引用指向一个ArrayList对象。在系统将要发生OOM异常前,会把这个ArrayList对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存,才会抛出OOM异常。根据软引用这个特性,可将其使用于缓存的场景。
1.3 弱引用
弱引用WeakReference和软引用类似,也是用来指向那些非必须的对象,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾回收发生为止。当垃圾收集器开始工作,无论当前内存是否足够&#x