java引用类型分为四类:强引用、软引用、弱引用和虚引用。
强引用:就是我们最常用的直接new对象创建的引用,垃圾回收器将永远不会回收被引用的对象。内存不足的情况JVM会直接抛出OOM。
软引用(SoftReference):软引用在内存不足的情况下会被垃圾回收器回收。软引用常被用在存储一些内存敏感的缓冲,例如网页缓冲、图片缓冲等。
弱引用(WeekReference):弱引用的强度比软引用更弱一下,无论内存是否足够,只要当GC开始,被扫描到的弱引用的对象就会被回收。
虚引用(PhantomReference):虚引用是最弱的一种引用关系。它随时可能被回收,并且对象是无法通过虚引用获取的。虚引用主要用来跟踪对象被GC回收的活动,当被虚引用修饰的对象在被回收时,JVM会把虚引用加入到与之关联的引用队列(ReferrenceQueue)中。