前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浏览器垃圾回收机制:“内存释放机制”

浏览器垃圾回收机制:“内存释放机制”

原创
作者头像
星辰大海c
发布2023-11-19 15:10:06
1940
发布2023-11-19 15:10:06
举报
文章被收录于专栏:前端学习教程前端学习教程

标记清除「谷歌」

引用计数(老版本火狐和IE)

    堆内存释放机制

  •  如果当前堆内存的16进制地址被其他事物引用,则堆内存不能释放掉 强引用
  •  如果没有东西占用这个堆内存,浏览器在空闲的时候,会把这些未被引用的堆内存“回收/释放”掉
代码语言:javascript
复制
let obj = {
    name:"zhufeng"
};
obj = null;//让obj不指向对象的堆内存,这样上述对象就可以被释放掉了{手动释放堆内存的方法:赋值为null}

栈内存(执行上下文)释放机制

  • 全局上下文是加载页面的时候产生的,也只有关闭页面的时候才释放。
  • 私有上下文(不论是函数/块),一般情况,执行完都会释放掉,以此来优化栈内存;但是有特殊情况,如果当前上下文中,创建的某个东西(一般指一个对象{堆内存}),被上下文以外的其他事物占用了,那么不仅创建的这个东西不能被释放,和其有关联的这个私有上下文也不能释放!!

             + 消耗内存(慎用);

             + 因为不被释放,所以这个私有上下文中的东西都被保留下来,以后可以拿来用。

闭包机制:

 函数执行会产生一个全新的私有上下文。

  • 保护:保护里面的私有变量不受外界的干扰,防止全局变量污染;
  • 保存:一旦这个上下文不被释放,里面的私有变量和值,就保存起来了,可以供其“下级”上下文中调取使用。

我们把函数执行产生的两大机制“保存/保护”,称之为闭包机制!!

image.png
image.png

词法分析

@1 我们从服务器端获取到的JS代码,本质就是一堆字符串,而浏览器会把这堆字符串,按照ECMA262规范,解析为自己可以识别的代码...我们把这个过程称之为“词法分析/解析”

@2 词法分析阶段,会把这堆代码变为浏览器可以识别的“树形结构 ==> AST语法树”

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •     堆内存释放机制
  • 栈内存(执行上下文)释放机制
  • 闭包机制:
  • 词法分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档