美文网首页
Java的对象的四种引用类型和六种可触及状态

Java的对象的四种引用类型和六种可触及状态

作者: 官总哦 | 来源:发表于2019-05-04 21:18 被阅读0次

    1.4种引用类型

    1.一个对象如果具有强引用,则绝对不会被GC回收
    2.一个对象具有软引用,则在内存充足的时候,GC不会回收;内存不足时会回收对象空间
    3.一个对象具有弱引用,则不管内存状态如何,被GC发现了就会被回收
    4.一个对象具有影子引用,则这个对象就等于没有引用一样随时可能被回收(影子引用就是用来跟踪垃圾回收状态的

    补充:
    (1)当一个对象具有软引用或者弱引用时,这个对象被GC回收的时候,可以将这个对象回收记录记录到相应的引用表中(引用表中记录了最近被回收的对象)
    (2)一个对象为什么要给予软引用?举一个例子,当我们浏览网页时,我们究竟需不需要保存前一篇网页呢?答案是可以,我们可以用类似于软引用的对象来保存。如果内存空间够大,我们就保存以前的网页做好用户回退的准备;如果小了,我们就回收网页数据。
    (3)弱引用的对象生存周期是一瞬间吗?不是的,GC扫描对象并进行相应的回收是需要一定的时间的(垃圾回收是一个优先级很低的线程),我们可以将一些偶尔用到的、比较特殊的对象置成弱引用。
    (4)影子引用是用来干什么的?一个对象如果被给予了影子引用,则它在被回收的时候就一定会被记录在与之关联的引用队列中(因为影子引用必须和引用队列关联使用)。所以影子引用就是用来记录特定对象的回收情况的。

    2.6种可触及状态

    强可触及,软可触及,弱可触及,可复活可触及,影子可触及,不可触及。

    相关文章

      网友评论

          本文标题:Java的对象的四种引用类型和六种可触及状态

          本文链接:https://www.haomeiwen.com/subject/owbfoqtx.html