对于js垃圾回收机制的理解


Posted in Javascript onSeptember 14, 2017

原理

找到不再被使用的变量,然后释放其占用的内存,但这个过程不是时时的,因为其开销比较大,

所以垃圾回收器会按照固定时间间隔周期性的执行

回收方式

a.标记清除

当变量进入环境时,将这个变量标记为“进入环境”;当变量离开环境时,则将其标记为“离开环境”。

标记“离开环境”的就回收内存

b.引入计数(低级浏览器)

当变量声明,第一次赋值时记为1,然后当这个变量值改变时,记录为0,将计数为0的回收

内存泄露

a.意外的全局变量引起的内存泄露

原因: 全局变量不会被回收

解决:使用严格模式避免

b.闭包引起的

原因: 活动对象被引用,使闭包内的变量不会被释放

解决: 将活动对象赋值为null

c.被清理的DOM元素的引用

原因: 虽然DOM被删掉了,但对象中还存在对DOM的引用

解决: 将对象赋值为null

d.被遗忘的定时器或回调

原因: 定时器内部实现闭包,回调也是闭包

解决: 清理定时器clearInterval、null

以上这篇对于js垃圾回收机制的理解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
精心挑选的15个jQuery下拉菜单制作教程
Jun 15 Javascript
解析jquery获取父窗口的元素
Jun 26 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
JavaScript对数组进行随机重排的方法
Jul 22 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 Javascript
基于jQuery实现图片推拉门动画效果的两种方法
Aug 26 jQuery
Vue 2.0学习笔记之Vue中的computed属性
Oct 16 Javascript
vue路由传参的基本实现方式小结【三种方式】
Feb 05 Javascript
使用SVG基本操作API的实例讲解
Sep 14 #Javascript
JSON 数据格式详解
Sep 13 #Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 #Javascript
详解动画插件wow.js的使用方法
Sep 13 #Javascript
JS库之Highlight.js的用法详解
Sep 13 #Javascript
详解wow.js中各种特效对应的类名
Sep 13 #Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 #Javascript
You might like
网络资源
2006/10/09 PHP
PHP利用header跳转失效的解决方法
2014/10/24 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP中如何使用session实现保存用户登录信息
2015/10/20 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
vue2里面ref的具体使用方法
2017/10/27 Javascript
在angular 6中使用 less 的实例代码
2018/05/13 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
微信小程序canvas实现签名功能
2021/01/19 Javascript
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python使用docx模块实现刷题功能代码
2020/02/13 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
Python使用shutil模块实现文件拷贝
2020/07/31 Python
介绍一下Linux文件的记录形式
2013/09/29 面试题
医学专业毕业生个人的求职信
2013/12/04 职场文书
敬老院院长事迹材料
2014/05/21 职场文书
食品工程专业求职信
2014/06/15 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书
浅谈Python协程asyncio
2021/06/20 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python