对于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 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
JavaScript中数据类型转换总结
Dec 25 Javascript
H5上传本地图片并预览功能
May 08 Javascript
JS解决position:sticky的兼容性问题的方法
Oct 17 Javascript
JS函数节流和函数防抖问题分析
Dec 18 Javascript
Vue的轮播图组件实现方法
Mar 03 Javascript
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
VUE动态生成word的实现
Jul 26 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
Codeigniter(CI)框架分页函数及相关知识
2014/11/03 PHP
PHP中Array相关函数简介
2016/07/03 PHP
Yii2中使用asset压缩js,css文件的方法
2016/11/24 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
仿百度输入框智能提示的js代码
2013/08/22 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
JS判断是否长按某一键的方法
2016/03/02 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
微信小程序之GET请求的实例详解
2017/09/29 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
python3常用的数据清洗方法(小结)
2019/10/31 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
瑜伽国际:Yoga International
2018/04/18 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
微博营销计划书
2014/01/10 职场文书
降消项目实施方案
2014/03/30 职场文书
出生公证书样本
2014/04/04 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
保安公司服务承诺书
2014/05/28 职场文书
运动员口号
2014/06/09 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
作风建设剖析材料
2014/10/06 职场文书
Python包argparse模块常用方法
2021/06/04 Python
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技