JS垃圾回收机制

本文探讨了JavaScript的垃圾回收机制,重点介绍了标记清除法的工作原理,包括从根节点开始扫描、标记可达变量、回收未标记对象。同时涵盖了分代回收、增量回收和空闲时间回收的优化措施,帮助理解JS引擎如何高效管理内存。
摘要由CSDN通过智能技术生成

JS垃圾回收机制

前言

先介绍的概念:

  • 全局变量
  • 函数中的局部变量和参数

这些直接能访问的到的变量称之为根。

标记清除法

基础的垃圾回收方法是标记清除法
JS引擎会先从开始标记,然后通过这些变量的引用访问被引用的变量并标记这些变量,直到没有引用变量可以访问。

然后,会将内存中无法到达的变量(即没有标记的变量)进行回收,释放他们的内存。

一些优化

  • 分代回收:将对象分为“新对象”和“旧对象”。“新对象”是指生命周期短,执行快的对象;“旧对象”指生命周期长的对象,在内存里长期存在,相比“新对象”JS引擎会减少对“旧对象”可达性的检查。
  • 增量回收:当内存中的变量很多时,一次性遍历完非常耗时。因此,将这些变量划分为几个部分,这几个部分分别进行回收。
  • 空闲时间回收:JS引擎仅在CPU空闲的时候进行垃圾回收,不影响执行效率。

参考博文:https://segmentfault.com/a/1190000018605776

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值