对于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 相关文章推荐
JavaScript 常用函数
Dec 30 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
用jquery统计子菜单的条数示例代码
Oct 18 Javascript
jQuery对Select的操作大集合(收藏)
Dec 28 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
Nov 19 Javascript
原生JavaScript制作微博发布面板效果
Mar 11 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
Nov 28 Javascript
基于node.js实现爬虫的讲解
Feb 18 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
May 14 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 Javascript
解决vant中 tab栏遇到的坑 van-tabs
Nov 04 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
实用函数8
2007/11/08 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
Nginx环境下PHP flush失效的解决方法
2016/10/19 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
jquery对表单操作2
2011/04/06 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
深入理解Vue 的条件渲染和列表渲染
2017/09/01 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
javaScript实现鼠标在文字上悬浮时弹出悬浮层效果
2020/04/12 Javascript
微信小程序实现简单表格
2019/02/14 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
JavaScript canvas绘制折线图
2020/02/18 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
Node.js API详解之 vm模块用法实例分析
2020/05/27 Javascript
详细解析Python中的变量的数据类型
2015/05/13 Python
python简单实现计算过期时间的方法
2015/06/09 Python
Python中有趣在__call__函数
2015/06/21 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
什么是Smart Navigation?
2016/07/03 面试题
个人找工作的自我评价
2013/10/17 职场文书
会计应聘求职信范文
2013/12/17 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers