前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >速知 Java 的强、软、弱、虚引用(秒懂)

速知 Java 的强、软、弱、虚引用(秒懂)

作者头像
星尘的一个朋友
发布2020-12-30 16:24:29
3580
发布2020-12-30 16:24:29
举报
文章被收录于专栏:星尘的一个朋友

背景

JDK2的时候,对象的引用只有两种情况

  1. 被引用
  2. 没被引用

后来有了更多场景的需要,

  • 如果内存还够用,即使我没被引用,也不要回收我。
  • 如果已经做了一次回收,还是不够用,那就把没被引用的我回收吧。

在这种需求提出后 JDK2之后,Java 补充了对象引用的概念,将引用分为强、软、弱、虚四种。

咖啡厅有鬼

了解对象引用概念之前先喝杯咖啡提提神。

4个不同性格的人喝咖啡

从前有甲乙丙丁四个人去咖啡厅喝咖啡,这四兄弟吧,不知道咖啡厅的规矩,跟我似的,也没去过啊,不知道。进去了之后这 甲乙丙丁 四兄弟就找个位置拿着咖啡在那喝。

结果不巧今天咖啡厅爆满!服务员就想着找一些喝完不走的人聊聊,把它们聊走,

也不知怎么的,就盯上这四兄弟了,就过来问 :“甲先生,你喝完了吗?今天人有点多,你看看…”,“管谁叫先生呢,我是你大姐!没喝完呢,你看不见呐,不走”。 势,服务员不敢惹。

接着他就朝着 走过来,他还没说话, 先开口:“刚你跟我大姐说的我听见了,你看这么的行不行,你先去找别人,如果你找完别人之后位置还不够,来找老妹儿,老妹儿给你让这个位置 ” ,服务员一看 是个 妹子,就答应她走开了。

这会儿服务员大哥已经有点累了,想赶快找到新位置出来,不然一会内存溢出了擦,来到 面前,“兄弟,今天餐厅位置不够了,你看你让一下子行不行”,说着用手拍着 的肩膀, 一看这架势,有点害怕,赶紧说:“行行行”,服务员一看,这 也太 了。

服务员大哥准备乘胜追击来到 面前,发现这个 有点问题,怎么说呢,就像 幽灵 一样若隐若现,完事服务员过去拍了一下他,这不拍不知道,一拍差点裤衩子都吓掉了,这压根就没人,甚至那杯咖啡他都拿不起来,服务员只好瑟瑟发抖的说“这地方我先收拾了啊” 然后就灰溜溜的跑开了,不一会这个位置就给其他客人坐上了。

大哥找了一会安排了一些人坐下,发现位置还是不够,于是他想起 说的话,就过去给 说了现在的情况,然后 也是个守信用的 妹子,就收拾东西走开了。

不过当 走开之后,服务员发现还有 1 个顾客没有位置坐!实在没办法了,谁也别喝了,关门吧,人都从咖啡厅里溢出去了。

所以这个故事告诉了我们什么?

咖啡厅里有鬼

总结一下,甲乙丙丁分别对应的 强软弱虚 四种引用类型

  • 甲:强引用(Strongly Re-ference) 只要我的咖啡(引用)还在,就没人敢动他,很强势。
  • 乙:软引用(SoftReference) 一个讲道理的引用,你先去收拾别的地方,如果你收拾完了地方还不够,我再让我的位置,不然你就让我多待一会
  • 丁:弱引用(Weak Reference) 这个引用的生命只能坚持到诞生之后的第一个 GC 就嗝屁了,来收拾你就得让,管你喝完没喝完。
  • 丙:虚引用(Phantom Reference) 幽灵一般的存在,最弱的一种引用关系,随时可能被回收,你不能用它来获取一个实例,这个引用的作用是为了对象被回收是接到通知。

这4种引用强度依次逐渐减弱。强 > 软 > 弱 > 虚

(正文完)


感谢阅读,一键三连支持作者,更欢迎关注我一起学习更多 Java 内容

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 咖啡厅有鬼
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档