对于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 相关文章推荐
jQuery新闻滚动插件 jquery.roller.js
Jun 27 Javascript
js文件缓存之版本管理详解
Jul 05 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
javascript实现的HashMap类代码
Jun 27 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
JavaScript实现的MD5算法完整实例
Feb 02 Javascript
详解Jquery的事件操作和文档操作
Dec 19 Javascript
Angular将填入表单的数据渲染到表格的方法
Sep 22 Javascript
JavaScript 作用域scope简单汇总
Oct 23 Javascript
如何在wxml中直接写js代码(wxs)
Nov 14 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
js实现三角形粒子运动
Sep 22 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_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
javascript中的正则表达式使用详解
2015/08/30 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
2016/09/24 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
Django实现快速分页的方法实例
2017/10/22 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
TensorFlow 滑动平均的示例代码
2018/06/19 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python实现剪切功能
2019/01/23 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
python读写文件write和flush的实现方式
2020/02/21 Python
python的pip有什么用
2020/06/17 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
Java提供了哪些企业应用编程接口
2015/02/13 面试题
自考生自我鉴定范文
2013/10/01 职场文书
原材料检验岗位职责
2014/03/15 职场文书
关于感恩的作文
2019/08/26 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Python matplotlib 利用随机函数生成变化图形
2022/04/26 Python