为了账号安全,请及时绑定邮箱和手机立即绑定

JS垃圾回收机制

JS垃圾回收机制

交互式爱情 2018-11-14 16:22:52
当我们给全局变量赋值null,从而主动解除引用,释放内存,那么这属于引用计数策略吗?不是说JS的垃圾回收机制只用标记清除吗?标记清除策略里就不涉及解除引用吗?
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

变量声明会在堆上分配内存,将相应引用标记为 null 是可以告诉解释器,这个变量对应的内存空间是可以被回收的。

不过这是 JS 的语法设计,并不涉及到解释器实现中内存管理的细节。实际上,浏览器的 GC 策略也是存在差异的。Chrome / Firefox / Safari 采用标记清除,而旧版 IE 采用引用计数。

并且,解除引用也不仅仅只有赋值 null 的形式。解释器可以通过作用域的方式决定变量的生命周期,在离开变量作用域时回收变量的内存空间。

【标记清除】和【引用计数】是两种不同的 GC 算法,而【解除引用】则是 JS 中的语法特性,二者可以是正交(无关)的。


查看完整回答
反对 回复 2018-12-15
  • 1 回答
  • 0 关注
  • 461 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信