这里要谈的是Java的四大引用
分别是:
强引用、软引用、弱引用、虚引用
- 强引用
引用中的铁头娃,头有多铁,给你见识一下,无论内存有多不够,对不起,绝对不会给你回收了,宁愿内存溢出,也不愿意回收这个对象。 - 软引用
软引用就比较识抬举,当内存不够的时候,软引用的对象就会被回收掉,把空间腾出来。 - 弱引用
弱引用比软引用更加地位低,只要垃圾回收到这里来了,这个就会被清理掉。所以它的存活时间仅仅到下次垃圾回收的时候。 - 虚引用
看了弱引用你还能想到比弱引用更低级的引用吗,有啊,虚引用,虚引用低到什么程度,可以这样说,虚引用连创建对象的资格都没有,那存在的意义是啥,就只是告诉大家垃圾回收到这里了,给大家提个醒。
接下来我用通俗的方式把四大引用拟化成生活中的事情讲解一下,可以加深理解。
假设内存是一个房间,垃圾回收器是打扫清洁的清洁员。
- 强引用
强引用就相当于房间中的家具,清洁员是不会将这些家具给清理掉的。即便整个房间都塞满家具,也不会清理掉这些家具。 - 软引用
软引用相当于房间中的旧家具或者不那么重要的家具,这些家具被贴上这样的标签:“当房间剩余空间不够的时候,可以把我丢掉。” - 弱引用
弱引用就好像是房间中的真正的垃圾,只要清洁员来一次,就会清理一次。 - 虚引用
虚引用真的是人如其名,虚幻的,啥也不算,啥都没有,甚至连占房间空间的资格都没有,就好像房间中的空气一样,默默看着清洁员一次又一次的来打扫,自己啥都不能干。