全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

浅谈JavaScript的自动垃圾收集机制

执行环境会负责管理代码执行过程中使用的内存,编写JavaScript程序时,所需内存的分配以及无用内存的回收完全实现自动管理。

原理:

找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)周期性地执行这一操作。

垃圾收集的方式:

1.标记清除(mark-and-sweep)

  最常用的垃圾收集方式。当变量进入环境时,就将变量标记为“进入环境”。从逻辑上讲,永远不能释放进入环境的变量所占用的内存,因为只要执行流进入相应的环境,就可能会用到它们。当变量离开环境时,则将其标记为“离开环境”。

  立即收集器在运行时会给存储在内存中的所有变量都加上标记,然后它会去掉环境中的变量以及被环境中的变量引用的变量的标记。剩下的在被加上标记的变量将被视为准备删除的变量,原因是环境中的变量已经无法访问到这些变量。最后,垃圾收集器完成内存清除,销毁那些带有标记的值并收回它们所占用的内存空间。

2.引用计数(reference counting)

  跟踪记录每个值被引用的次数,当这个值的引用次数为0时,说明没有办法再访问这个值了,因而就可以将其占用的内存空间回收回来。当垃圾收集器下次再运行时,会释放那些引用次数为零的值所占用的内存。

(1)应用机制存在一个问题:循环引用。

  循环引用是指对象A中包含一个指向对象B的指针,而对象B中也包含一个指向对象A的引用。(这样它们的引用可能永远不为0,如果函数被重复多次调用,就会导致大量的内存得不到回收。)

(2)IE中的BOM和DOM中的对象使用C++以COM(component Object Model,组件对象模型)对象的形式实现,而COM对象的垃圾收集机制采用的是引用计数策略。

以下是COM对象导致的循环引用的问题:

eg:

var element=document.getElementById("some_element");
 var myObject=new Object();
 myObject.element=element;
 element.someObject=myObject;

上面的例子在一个DOM元素(element)和一个原生JavaScript对象(myObject)之间创建了循环引用。由于存在这个循环引用,即使将例子中的DOM从页面移除,它也永远不会被回收。

可以使用以下代码手工断开原生JavaScript和DOM元素之间的链接:

myObject.element=null;
element.someObject=null;

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 垃圾收集机制  # javascript垃圾收集机制的原理分析  # javascript垃圾收集机制与内存泄漏详细解析  # Javascript 垃圾收集机制介绍理解  # 收集器  # 流进  # 的是  # 这一  # 就会  # 是指  # 将其  # 所需  # 将被  # 没有办法  # 可以使用  # 不为  # 一个问题  # 中也  # 就将  # 永远不会  # 它会  # 它也  # 上讲  # 最常用 


相关文章: 如何快速搭建响应式可视化网站?  建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南  建站之星伪静态规则如何正确配置?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  已有域名和空间如何快速搭建网站?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何快速生成橙子建站落地页链接?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何在服务器上配置二级域名建站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  装修招标网站设计制作流程,装修招标流程?  在线制作视频的网站有哪些,电脑如何制作视频短片?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  建站为何优先选择香港服务器?  智能起名网站制作软件有哪些,制作logo的软件?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何在阿里云ECS服务器部署织梦CMS网站?  宿州网站制作公司兴策,安徽省低保查询网站?  油猴 教程,油猴搜脚本为什么会网页无法显示?  专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?  平台云上自主建站:模板化设计与智能工具打造高效网站  建站之星安装步骤有哪些常见问题?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站之星如何快速解决建站难题?  企业微网站怎么做,公司网站和公众号有什么区别?  专业公司网站制作公司,用什么语言做企业网站比较好?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  php json中文编码为null的解决办法  建站OpenVZ教程与优化策略:配置指南与性能提升  宁波免费建站如何选择可靠模板与平台?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  制作表格网站有哪些,线上表格怎么弄?  网站制作价目表怎么做,珍爱网婚介费用多少?  广州营销型建站服务商推荐:技术优势与SEO优化解析  建站主机选虚拟主机还是云服务器更好?  如何注册花生壳免费域名并搭建个人网站?  jQuery 常见小例汇总  网站代码制作软件有哪些,如何生成自己网站的代码?  如何在西部数码注册域名并快速搭建网站?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  个人摄影网站制作流程,摄影爱好者都去什么网站?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  TestNG的testng.xml配置文件怎么写  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在云主机快速搭建网站站点? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。