对象的引用关系关联到对象是否可被回收机回收策略。
- 强引用:普通的创建对象构造的就是强引用关系,直到对象生命周期结束,或者显示赋值为null,这时候表明对象可以被回收了。
- 软引用:软引用相对强引用比较弱一些,可以豁免一些jvm的垃圾回收,当jvm认为空间不足时会回收软引用。即确保OOM之前软引用会被回收,可以实现一些敏感的缓存。内存空闲时,缓存存在,内存不足时回收。
- 弱引用 : 此引用不能豁免垃圾回收,提供了一种弱引用状态下对象的访问。这是一种没有强制关系的引用,对象存在则返回不存在则重新实例化。
- 幻想引用:不能提供对象的访问,只是用来对象呗finalize后处理一些事情。
- 对象的引用和垃圾收集息息相关:
- 强可达:通过强引用引用的对象就是强可达。
- 软可达:通过软引用可以访问的对象。
- 弱可达:通过弱引用可以访问。
- 幻象可达:对象finalize后就是幻象引用。
- 之后就是不可达。
参考:java36讲