当前位置: 首页 > news >正文

浏览器的垃圾回收机制有哪些?

JS会在创建变量时自动分配内存,在不使用的时候会自动周期性的释放内存,释放的过程就叫 "垃圾回收"。

一方面自动分配内存减轻了开发者的负担,开发者不用过多的去关注内存使用,但是另一方面,正是因为因为是自动回收,所以如果不清楚回收的机制,会很容易造成混乱,而混乱就很容易造成"内存泄漏"。

由于是自动回收,所以就存在一个 "内存是否需要被回收的" 的问题,但是这个问题的判定在程序中意味着无法通过某个算法去准确完整的解决,后面探讨的回收机制只能有限的去解决一般的问题。

回收算法

垃圾回收对是否需要回收的问题主要依赖于对变量的判定是否可访问,由此衍生出两种主要的回收算法:

  • 标记清理
  • 引用计数

标记清理

标记清理是js最常用的回收策略,2012年后所有浏览器都使用了这种策略,此后的对回收策略的改进也是基于这个策略的改进。其策略是:

  • 变量进入上下文,也可理解为作用域,会加上标记,证明其存在于该上下文;
  • 将所有在上下文中的变量以及上下文中被访问引用的变量标记去掉,表明这些变量活跃有用;
  • 在此之后再被加上标记的变量标记为准备删除的变量,因为上下文中的变量已经无法访问它们;
  • 执行内存清理,销毁带标记的所有非活跃值并回收之前被占用的内存;

局限:

  • 由于是从根对象(全局对象)开始查找,对于那些无法从根对象查询到的对象都将被清除
  • 回收后会形成内存碎片,影响后面申请大的连续内存空间

引用计数

引用计数策略相对而言不常用,因为弊端较多。其思路是对每个值记录它被引用的次数,通过最后对次数的判断(引用数为0)来决定是否保留,具体的规则有:

  • 声明一个变量,赋予它一个引用值时,计数+1;
  • 同一个值被赋予另外一个变量时,引用+1;
  • 保存对该值引用的变量被其他值覆盖,引用-1;
  • 引用为0,回收内存;

局限:

最重要的问题就是,循环引用 的问题

function refProblem () {let a = new Object();let b = new Object();a.c = b;b.c = a;  //互相引用
}

 

根据之前提到的规则,两个都互相引用了,引用计数不为0,所以两个变量都无法回收。如果频繁的调用改函数,则会造成很严重的内存泄漏。

http://www.jsqmd.com/news/1282422/

相关文章:

  • 多语种唇形对齐怎么选?跨境 AI 视频生成接口横向测评
  • 去第三世界国家旅行,净水器怎么选?——从病毒去除能力说起
  • 宝妈做抖店一件代发容易踩哪些坑?副业经营避坑指南 - 电商分享
  • 摆脱环境配置难题!OpenClaw 小龙虾 Windows 系统搭建全流程(含安装包)
  • 2026深圳福田包包回收定价新规:杜绝报价偏差,零隐形扣费避坑攻略 - 大牌深度测评
  • Xilinx FPGA BGA封装设计与布线实战指南
  • Koopman MPC在非线性系统控制中的应用与实现
  • 实测西安新城8家黄金回收商铺,仅2家敢把无灼烧检测写进协议,资质拉满 - 全城热点
  • PAT甲级1058 A+B in Hogwarts 模拟
  • 德州仪器TPIC7710评估模块(EVM)与GUI软件实战指南
  • MouseClick:当鼠标点击成为艺术,开源自动化工具如何重塑工作效率
  • 开源大模型成本怎么选?7大维度拆解GPU小时费、显存占用、量化损耗、API调用成本——错过这篇,多花37%预算
  • imgproxy安全加固实战:CORS配置、请求限制与漏洞防范
  • OpenClaw开源自动化工具:原理、实践与性能优化
  • 计算机毕业设计之基于SpringBoot的电影票购买系统
  • jupyter 使用nginx进行代理的nginx配置文件
  • YZ04:文本批量替换使用说明文档
  • NXP无线连接技术解析与应用指南
  • 降AIGC终极攻略!AI率92%暴降至5%!实测10款降AIGC工具!10款工具深度解析! - 降AI小能手
  • 第六章音频感知元素结构理论
  • 数据库动态凭据两层模型:根凭据与子凭据实战
  • 3D模型【狮子】
  • 物联网设备硬件安全防护与SE050开发实战
  • 强力解码微信QQ语音文件:silk-v3-decoder音频格式转换解决方案
  • 2026青岛品牌VI设计公司专业推荐:米塔文创打造企业统一视觉体系 - 新思维商业观察
  • CSRF攻击原理深度解析与全方位防御实战指南
  • MySQL索引下推(ICP)原理详解:优化查询性能的关键技术
  • 2026昆明黄金回收避坑干货:线上估价不等于到手价,交易务必现场复秤核验 - 商业每日快报
  • SMS六种接入场景怎么选:Jenkins到K8s全对比
  • 第五章视频感知元素结构理论