四种引用类型

无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象是否可达,判定对象
是否可被回收都与引用有关。
Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命
周期;第二是有利于JVM进行垃圾回收。
1. 强引用
被强引用关联的对象不会被回收。
使用 new 一个新对象的方式来创建强引用。
如果想中断强引用和某个对象之间的关联,可以显示地将引用赋值为null,这样一来的话,JVM在合适
的时间就会回收该对象。
2. 软引用
被软引用关联的对象只有在内存不够的情况下才会被回收。可以用来实现缓存:比如网页缓存、图片缓
存等。
假如有一个应用需要读取大量的本地图片,如果每次读取图片都从硬盘读取,则会严重影响性能,但是
如果全部加载到内存当中,又有可能造成内存溢出,此时使用软引用可以解决这个问题。
设计思路是:用一个HashMap来保存图片的路径 和 相应图片对象关联的软引用之间的映射关系,在内
存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效地避免了OOM的问题。在
Android开发中对于大量图片下载会经常用到。
Object obj = new Object();使用 SoftReference 类来创建软引用。
3. 弱引用
被弱引用关联的对象一定会被回收,也就是说它只能存活到下一次垃圾回收发生之前。
使用 WeakReference 类来创建弱引用。
4. 虚引用
又称为幽灵引用或者幻影引用,一个对象是否有虚引用的存在,不会对其生存时间造成影响,也无法通
过虚引用得到一个对象。
为一个对象设置虚引用的唯一目的是能在这个对象被回收时收到一个系统通知,跟踪对象被垃圾收集器
回收的活动,起哨兵作用。
使用 PhantomReference 来创建虚引用。
posted @ 2020-07-21 15:17  miracleyy  阅读(188)  评论(0)    收藏  举报