强引用/弱引用

此概念与JS垃圾回收机制紧密相关:内容待审核

一. 前言

在垃圾回收中,所有东西都是围绕着引用这一概念展开的。引用分为两类,弱引用和强引用,而日常所提到的引用一般都是指强引用。

二. 概念

强引用:强引用的对象资源永远不会被垃圾回收

弱引用:无法阻止弱引用的对象资源被垃圾回收

三. 范例

概念非常绕,以下图为例。

图1图2展示了同时存在强弱引用和仅存在弱引用的两种情况,图中实线表示强引用,虚线表示弱引用。

在图1的状态下,变量a,b都能通过引用访问ObjectA,并且由于变量a对ObjectA存在强引用,ObjectA永远都不会被垃圾回收。

但在图2的情况下,对象ObjectA仅有来自于变量b的弱引用,而弱引用是无法阻止他所引用的对象被垃圾回收的,因此对象ObjectA会被垃圾回收,而变量b会指向undefined。

四. 范例(卡通展示)

可以打一个比方,如下图所示,人物对应的是变量,狗对应的是对象。

强引用相当于人物(变量)和狗(对象)之间栓了一个铁链,弱引用则相当于人物用手指着这条狗,在铁链一直存在的时候,两个人物一直都能看到这条狗(通过引用访问)。而当这条铁链断掉(强引用消失)之后,狗就会跑开(垃圾回收),而指着这条狗的人物(弱引用)并没有办法阻止这条狗的离去,最后会指向空气(undefined)。

五. 链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值