对于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 相关文章推荐
ExtJS 2.0实用简明教程 之ExtJS版的Hello
Apr 29 Javascript
javascript dom追加内容实现示例
Sep 21 Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 Javascript
jquery动态切换背景图片的简单实现方法
May 14 Javascript
前端js文件合并的三种方式推荐
May 19 Javascript
详解Node.js如何开发命令行工具
Aug 14 Javascript
深入理解bootstrap框架之入门准备
Oct 09 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
Dec 24 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
微信小程序实现选项卡效果
Nov 06 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 Javascript
vue获取data数据改变前后的值方法
Nov 07 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网站来路获取代码(针对搜索引擎)
2010/06/08 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
PHP Trait代码复用类与多继承实现方法详解
2019/06/17 PHP
PJBlog插件 防刷新的在线播放器
2006/10/25 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
jquery中获取id值方法小结
2013/09/22 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
javascript学习笔记(五)原型和原型链详解
2014/10/08 Javascript
Jquery简单实现GridView行高亮的方法
2015/06/15 Javascript
JavaScript开发者必备的10个Sublime Text插件
2016/02/27 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
Node.js中使用mongoose操作mongodb数据库的方法
2017/09/12 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
2018/05/29 Javascript
详解vue-loader在项目中是如何配置的
2018/06/04 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
three.js实现圆柱体
2018/12/30 Javascript
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
python实现三壶谜题的示例详解
2020/11/02 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
有模特经验的简历自我评价
2013/09/19 职场文书
初中同学会活动方案
2014/08/22 职场文书
先进党员事迹材料
2014/12/24 职场文书
初中英语教学反思范文
2016/02/15 职场文书
Python基于Tkinter开发一个爬取B站直播弹幕的工具
2021/05/06 Python
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
vue中data里面的数据相互使用方式
2022/06/05 Vue.js