百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 秒懂js的垃圾回收机制
分享文章到:

秒懂js的垃圾回收机制

发布时间:09/01 来源:未知 浏览: 关键词:
前言


js具有主动垃圾回收机制,换句话说,施行环境会治理代码施行历程中使用的内存。

js垃圾回收的道理


施行环境会寻出那些不再连续使用的变量,然后开释其占用的内存。

js垃圾回收的战略


标志清除

当变量进入环境时,就将这个变量标志为“进入环境”,而当变量分开环境时,则将其标志为“分开环境”。

标志变量方式看详细的实现,比方可以使用一个“进入环境”的变量列表和一个“分开环境”的变量列表来跟踪哪个变量发生了转变。

使用过标志清除的阅读器有IE,Firefox,chrome。

援用计数

这是一种不太常见的垃圾回收的战略,它就是跟踪每一个值被援用的次数。

当声明了一个变量a并将一个援用类型值({name:'cc'})赋给该变量时,则这个值的援用次数就是1,假如a({name:'cc'})又赋给另一个变量b,则该值的援用次数加1。反之,假如a赋值{name:'xx'},则{name:'cc'}这个值的援用次数减1。当{name:'cc'}这个值的援用的次数变为0时,则说明没有方法再拜访{name:'cc'}这个值了,因此可以将其占用的内存空间回收。这样,当垃圾回收器工作的时候,{name:'cc'}这个值占用的内存空间就会被回收。

这种方式曾今被Netscape Navigator 3.0使用过,但是有一个严峻问题:轮回援用。

function circleReferenceProbem(){
  let objectA = new Object()
  let objectB = new Object()

  objectA.someOtherObject = objectB
  objectB.anotherObject = objectA
}

施行这个函数后,由于这两个援用值的援用次数永久不会为0,垃圾回收器永久不会回收它们占用的内存空间。

js垃圾回收器的机能


由于js垃圾回收器是每隔一个周期就施行一次垃圾回收。

假如为变量分配的内存数目不大的话,那么垃圾回收器的回收工作量就不大。但是,当垃圾回收器的工作量过大的时候,就很大概会显现卡顿的状况。

js中治理内存的倡议


  • 尽量少用全局变量

  • 尽大概手动清除变量的援用

感谢阅读!

需要加微信交流,可留言!

引荐教程:《JS教程》

以上就是秒懂js的垃圾回收机制的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板