文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

四种对象引用之间的区别是什么?你知道吗?

2024-12-01 15:05

关注

Java中的4种引用类型主要是指强、软、弱、虚,

它们主要是体现对象不同的可达性状态和对GC的影响。下面我给大家详细地分析一下我对这四种引用类型的理解。

1、强引用:只要引用关系还在,对象就永远不会被回收。

其实就是指普通对象的引用,只要还有引用关系存在,就表示对象还活着,垃圾收集器无法回收这一类对象。只有在没有其他引用关系或者超过引用作用域,再或者是将对象引用强制赋值为null的情况下,垃圾收集器才会去回收这个对象。

2、软引用:非必须存活的对象,JVM会在内存溢出前对其进行回收。

是一种相对于强引用来说弱一些的引用。可以让对象豁免一些垃圾收集的操作。只有当JVM判断内存不足的时候,才会试图回收引用指向的对象。那软引用通常是用来实现内存敏感的一些缓存,如果还有空闲内存就可以暂时保留缓存,当内存不足的时候会清理掉。这样就可以保证使用缓存的同时,不会耗尽内存。

3、弱引用:非必须存活的对象,不管内存是否够用,下次GC一定回收。

弱引用是相对于强引用而言的,它是允许存在引用关联的情况下,能被垃圾回收的对象。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现只具有弱引用的对象的时候,不管当前的内存空间是否足够,垃圾回收器都会回收这个内存。

4、虚引用:等同于没有引用,对象被回收时会收到通知。

虚引用不会决定对象的生命周期,它提供一种确保对象被finalize以后,去做某些事情的机制。当垃圾回收期准备去回收一个对象的时候,如果发现他还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中,程序可以通过判断引用队列是否已经加入虚引用,来决定被引用对象是否要被垃圾回收器回收。然后,我们就可以在引用对象被回收之前执行一些必要的操作。所以,虚引用必须和引用队列一起使用,

以上的分享还是比较官方,举个通俗例子,大家就会更容易理解。

以上就是我对Java中4种引用对象的理解。有兴趣的小伙伴,可以更进一步去研究一下。

来源:Tom弹架构内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯