浅谈JS垃圾回收机制

一、什么是垃圾回收机制

JavaScript具有自动垃圾回收机制,执行环境会负责管理代码执行过程中使用的内存。原理很简单:找出不再继续使用的变量,然后释放其占用的内存。垃圾收集器会按照固定的时间间隔周期性地执行这一操作。

二、常见的垃圾回收策略
  1. 标记清除:标记清除是最常用的垃圾收集方式。当变量进入环境时,将变量标记为“进入环境”,当变量离开环境时(如函数执行结束),将变量标记为离开环境。

第一步:将所有变量都加上标记
在这里插入图片描述
第二步:取消环境中的变量以及被环境中的变量引用的变量的标记
在这里插入图片描述
第三步:被标记的变量被视为准备删除的变量,垃圾收集器完成清除工作
在这里插入图片描述

  1. 引用计数:当声明一个变量并将引用类型赋值给该变量时,这个值的引用次数为1,同一个值被赋给另一个变量,则该值的引用次数+1,相反,如果该变量被赋予另一个值,则引用次数-1。
三、关于垃圾回收机制的个人理解(离开环境时变量会被清除)

首先先贴上代码图:
在这里插入图片描述

  1. 当未进行点击操作时,{ name: 'Tom' } 被obj 对象所引用的,此时无法被回收释放。
  2. 当用户进行第一次点击操作时, { name: 'Tom' } 已经无法被访问到,此时被回收释放。
  3. 当用户进行第二次点击操作时, { name: 'Tom' } 被重新赋值给 obj 对象(需要注意的是此时的 { name: 'Tom' } 与之前的并不是同一个,因为之前的已被回收),此时 obj 有了新的引用。
  4. 当用户进行第三次点击操作时,obj 再次被赋值为 null ,上次被引用的对象 { name: 'Tom' } 会被回收释放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值