为了账号安全,请及时绑定邮箱和手机立即绑定

javascript的垃圾回收机制

标签:
JavaScript

申明:本文是js系列笔记之一,有不正确的地方请尽管指出,大家相互学习,共同进步;

js的 垃圾回收机制,常用的有两种方法:标记清除,引用计数;

标记清除:当变量进入环境时标记为“进入环境”,当变量离开环境时标记为“离开环境”;然后垃圾收集器会定时去清除,销毁被标记为离开环境的变量,释放其内存;

引用计数:

跟踪记录每一个引用的值被引用的次数。即变量每被引用一次,引用计数加1,相反当包含这个值的 引用变量又取得了另外一个值(另外一个值赋给了引用这个值的变量),引用计数减1;当引用计数变为0时,则说明没有值引用这个值了,此时(你已经猜到了)这个变量就可以被垃圾回收机制回收了,(因为没有在被引用了);

内存泄漏:

webp

最常见的循环引用

相互引用计数永远不可能为0,所以两个变量内存永远都不会被释放,如果程序执行多次,这样的变量越来越多;浏览器越来越卡,终究会奔溃;

内存管理:

js的垃圾收集机制,让我们开发人员无需担心内存管理的问题,但是内存终究有限;所以建议:在开发中,确保一些内存占用非常大的变量不在使用时,我们可以主动:变量 = null;当然,你不这样做也是可以的,只是会对内存造成浪费,对浏览器的性能造成一定的影响;

性能问题:

ie6及之前在运行垃圾收集机制时会以以下几个临界值作为条件:达256个变量,4096个对象或者数组元素,或者64kb的字符串(JavaScript高级编程),达到任何一个临界值,垃圾收集器就会运行;问题在于:可能某个执行脚本中一直存在那么多的变量,那么垃圾收器会频繁的运行,这对性能本来就是一种不良行为,导致性能问题严重;所以决定一个浏览器性能与其垃圾收集机制息息相关,另外需要注意,垃圾收集机制是周期性运行的;



作者:XBGG
链接:https://www.jianshu.com/p/14d9c7a3eb3f


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消