虚引用

android-------- 强引用、软引用、弱引用、虚引用使用

梦想的初衷 提交于 2019-12-02 18:21:23
在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。 从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。下面来阐述一下这四种类型引用的概念: 引用分为四个,从高到低的级别以此为 强引用 - 软引用 - 弱引用 - 虚引用 . 引用类型 类别 回收机制 用途 生存时间 强引用 从不回收 对象状态 JVM停止运行时 软引用 内存不足时进行回收 缓存 内存不足 弱引用 对象不被引用时回收 缓存 GC运行后 虚引用 对象被回收时 管理控制精确内存稳定性 unknown 强引用(Strong Reference) 永不回收。 强引用就是在程序代码之中普遍存在的,类似 Object obj = new Object() 这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。 弱引用(Soft Reference) 重点回收对象。 弱引用也是用来描述非必需对象的,被弱引用关联的对象只能生存到下一次垃圾收集发生之前。 软引用(Weak Reference)