1. 强引用,是最常见的引用方式,垃圾收集器看到一个对象被强引用了,就不会对它非分之想。只有超过了引用的作用域或者强引用被赋值为 NULL,这时候就可以被垃圾收集。

  2. 软引用,相对弱化的强引用,垃圾收集器也不太会对其进行回收,只有 JVM 觉得自己内存不够了的时候,才会去视图回收软引用的对象。软引用通常用来实现缓存。

  3. 弱引用,仅仅提供了一种访问弱引用状态的途径,一般用来实现缓存。

  4. 虚引用,也叫幻想引用,提供了一种对象确保被 finalize 之后,做某些事情的机制。