对于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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 Javascript
推荐9款炫酷的基于jquery的页面特效
Dec 07 Javascript
jQuery遍历DOM节点操作之filter()方法详解
Apr 14 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
May 19 Javascript
JS基础随笔(菜鸟必看篇)
Jul 13 Javascript
AngularJS中比较两个数组是否相同
Aug 24 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
Node.js简单入门前传
Aug 21 Javascript
javaScript动态添加Li元素的实例
Feb 24 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
浅入深出Vue之自动化路由
Aug 06 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
PHP修改session_id示例代码
2014/01/08 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jquery购物车实时结算特效实现思路
2013/09/23 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
JS执行删除前的判断代码
2014/02/18 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
JS重载实现方法分析
2016/12/16 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
高效的jQuery代码编写技巧总结
2017/02/22 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
backbone简介_动力节点Java学院整理
2017/07/14 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
bootstrap+jquery项目引入文件报错的解决方法
2018/01/22 jQuery
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
让python在hadoop上跑起来
2016/01/27 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
替换python字典中的key值方法
2018/07/06 Python
Python如何实现后端自定义认证并实现多条件登陆
2020/06/22 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
2014年卫生院工作总结
2014/12/03 职场文书
老员工辞职信范文
2015/05/12 职场文书
春节晚会开场白
2015/05/29 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python