很多同学对于java对象引用中的强引用,软引用,弱引用,虚引用这几个概念不是太清楚,看网上的文章也是一大坨,看起来眼花缭乱,今天我们就用通俗易懂的方式详细介绍下这几个引用的意思。
一、强引用
强引用一般的理解就是,某个对象被其他对象强制引用,强制关联上,当发生垃圾回收的时候,是绝对不会回收当前对象的。
二、软引用
软引用一般的理解就是这个对象被某些对象引用,但是不是那么必要性。当发生垃圾回收的时候,如果内存足够,那么此对象就不会被回收,如果内存不充足,则此对象就会被回收。打个比方,我们经常用redis存储缓存,如果我们从redis中取某个值,取得到就用,如果redis内存不足,则此值就会被清除掉,业务上就从取不到这个值了,那么去数据库查,查完再放到redis内存中,再使用即可。这个比喻不是完全恰当,只是相对来说表述下软引用的一种场景。
三、弱引用
弱引用一般的理解就是这个对象被其他对象引用的重要性没那么高,他比软引用的生命周期更短,每次发生垃圾回收的时候,不管内存是否充足,如果扫描到只有弱引用,那么就会强制回收此对象。
四、虚引用
虚引用一般的理解就是形同虚设,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
还没有评论,来说两句吧...