JavaScript垃圾回收机制

一、JS 垃圾回收机制
垃圾回收机制是干什么的?
把不需要或者是不用的代码进行回收
例如:
在第6行就应该把a销毁掉
在这里插入图片描述
但是系统怎么知道销毁的a没有用呢?
因此需要知道标记清除和引用计数的方法了。

1》标记清除(最常用的一种垃圾回收机制)
在这里插入图片描述
其实在11行声明变量的时候,就已经标记了一下,在12行还在用弹出函数
14行函数已经调用完成(不再执行),那么在15行就没有再用到这个函数中的a,因此,它会在内存中,把a销毁掉。

2》引用计数(最不常用一种垃圾回收机制)
案例:创建一个函数,写一个对象,在fn中把obj传过去,那么20行的o对应的就是obj。如果将o赋给一个变量,则引用一次(+1),同理,再赋一个变量(+2).
在这里插入图片描述
那么什么时候会清除?
如果在不引用o了(如在23行后不再 + (引用)了)或者是销毁了,那么不引用了(-1),再次不引用了(再-1),一直-1直到为0的时候才能清除。
在这里插入图片描述

那么提问:如果一直都是引用,没有不引用的情况,是否就不销毁了呢?
不是,但是会等很长时间才能销毁。因此,这便是引用计数最不常用的原因。

3.手动清除(其实就是把不用的变量|对象|函数===》(赋值为空)= null)

案例:创建函数,运行函数,在函数内写一个对象obj1,再给obj添加一个属性。再创建一个对象obj2,也写一个属性。
在这里插入图片描述
在这里插入图片描述

#如果对象obj1在项目中不需要用了/不想用对象obj1了,则可以写“对象=null”。

在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值