首页 > 教程 >
快速理解 JavaScript 的垃圾回收
2023-02-16教程围观次
简介快速理解JavaScript的垃圾回收前言JS具有自动垃圾回收机制,换句话说,执行环境会管理代码执行过程中使用的内存。JS垃圾回收的原理执行环境会找出那些不再继续使用的变量,然后释放其占用的内存。JS垃圾回收的策略标记清除当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。标记变量方式看具体的实现,比如可以使用一个“进入环境”的变量列表和一个“离开环境”
快速理解 的垃圾 回收
前言
JS具有自动垃圾回收机制,换句话说,执行环境会管理代码执行过程中使用的内存。
JS垃圾回收的原理
执行环境会找出那些不再继续使用的变量,然后释放其占用的内存。
JS垃圾回收的策略
标记清除
当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,则将其标记为“离开环境”。
标记变量方式看具体的实现,比如可以使用一个“进入环境”的变量列表和一个“离开环境”的变量列表来跟踪哪个变量发生了变化。
使用过标记清除的浏览器有IE,Firefox,chrome。
引用计数
这是一种不太常见的垃圾回收的策略,它就是跟踪每一个值被引用的次数。
当声明了一个变量a并将一个引用类型值({name:'cc'})赋给该变量时,则这个值的引用次数就是1,如果a({name:'cc'})又赋给另一个变量b,则该值的引用次数加1。反之,如果a赋值{name:'xx'},则{name:'cc'}这个值的引用次数减1。当{name:'cc'}这个值的引用的次数变为0时,则说明没有办法再访问{name:'cc'}这个值了,因而可以将其占用的内存空间回收。这样,当垃圾回收器工作的时候,{name:'cc'}这个值占用的内存空间就会被回收。
这种方式曾今被Netscape Navigator 3.0使用过,但是有一个严重问题:循环引用。
function circleReferenceProbem(){ let A = new () let B = new () A.someOther = B B.another = A}
执行这个函数后,因为这两个引用值的引用次数永远不会为0,垃圾回收器永远不会回收它们占用的内存空间。
JS垃圾回收器的性能
因为JS垃圾回收器是每隔一个周期就执行一次垃圾回收。
如果为变量分配的内存数量不大的话,那么垃圾回收器的回收工作量就不大。但是,当垃圾回收器的工作量过大的时候,就很可能会出现卡顿的情况。
JS中管理内存的建议
1、尽量少用全局变量
2、尽可能手动清除变量的引用
下载链接:网站源码/小程序源码/网站模板下载
下载排行
- 九块九进群/付费进群程序源码+搭建教程
- 微信记账小程序源码/个人记账本小程序源码
- 最新720全景云系统/可生成小程序+带PC端+安装教程/价值800元的720云全景系统源码
- 点微同城系统整站源码 带pc端与小程序端+49款插件
- 最新仿神马在线播放视频电影网站,带VIP系统,试看功能 全站数据,优化视频上传,三级分销 火车头采集
- WordPress独立后台高端二开黑金壁纸微信小程序源码
- 七夕情侣飞行棋游戏限定版本源码/解锁版
- 风车IM即时通讯聊天系统源码/聊天APP源码+附APP安装包
- 新版多功能去水印工具微信小程序源码下载+带流量主功能
- 百度百科小程序源码/基于uniapp开发的zblog多端小程序开源源码
最新发布
-
最新去水印小程序源码分享/无需后台/对接接口/支持全网去水印功能
-
群多多社群人脉H5-2.1.4多开插件+小程序独立前端+搭建教程
-
七夕情侣飞行棋游戏限定版本源码/解锁版
-
苹果CMS海螺模版V20修复版/加广告代码
-
宠物社区风格 商业版(GBK)Discuz模板
-
全新UI基于Thinkphp的最新自助打印系统/云打印小程序源码/附教程
-
易优CMS家纺家居装饰类网站模板/EyouCMS家具家居类企业网站模板
-
EyouCMS艺术***摄影工作室网站模板/易优CMS摄影工作室网站模板
-
易优CMS响应式精品茶具实木茶盘销售网站模板/EyouCMS响应式酒水饮料类企业网站模板
-
EyouCMS响应式推土机挖掘机机械类网站模板/易优CMS机械设备类企业网站模板