APP下载

Android四种引用类型你了解多少?——强烈建议加入收藏夹

消息来源:baojiabao.com 作者: 发布时间:2024-05-09

报价宝综合消息Android四种引用类型你了解多少?——强烈建议加入收藏夹

在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。

从Java SE2开始,就提供了四种类型的引用:强引用、软引用、弱引用和虚引用。Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收。下面来阐述一下这四种类型引用的概念:

引用分为四个,从高到低的级别以此为强引用-软引用-弱引用-虚引用.

引用类型


强引用(Strong Reference)

永不回收。

强引用就是在程序代码之中普遍存在的,类似 Object obj = new Object() 这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象。


弱引用(Soft Reference)

重点回收对象。

弱引用也是用来描述非必需对象的,被弱引用关联的对象只能生存到下一次垃圾收集发生之前。


软引用(Weak Reference)

内存将要溢出时才被回收。

软引用是用来描述一些还有用但并非必需的对象。对于软引用关联著的对象,在系统将要发生内存溢出异常之前,将会把这些对象列表回收范围之中进行二次回收。如果这次回收还没有足够的内存,才会抛出内存溢出异常。


虚引用(了解)(Phantom Reference)

虚引用也称为幽灵引用或者幻影引用,它是最弱的一种引用关系。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。

常用的弱引用和软引用

比如在图片载入框架中,通过弱引用来实现内存缓存。

Handler 弱引用,防止内存泄漏




2018-04-19 16:33:00

相关文章