电话:19337019688
关闭
您当前的位置:首页 > 职场资讯 > 前端面试秘籍

1、JavaScript 有哪些垃圾回收机制?

来源:商丘人才网_商丘招聘网_商丘人才市场_豫商人才网招聘平台 时间:2022-03-25 作者:商丘人才网_商丘招聘网_商丘人才市场_豫商人才网招聘平台 浏览量:

• 标记清除( mark and sweep )

这是 JavaScript 最常见的垃圾回收方式 。 当变 量进入执行环境的时候,比如在函数

中声明 一个变量,垃圾回收器将其标记为“进入环境 ” 。 当变 量离 开环境的时候(函数执

行结束),将其标记为“离开环境”。

垃圾回收器会在运行的时候给存储在内存中的所有变量加上标记,然后去掉环境中

的变量,以及被环境中变量所引用的变量 (闭包)的标记 。 在完成这些之后仍然存在的

标记就是要删除的变量 。

• 引用计数( reference counting)

在低版本的 IE 中经常会发生内存泄漏,很多时候就是因为它采用引用计数的方式进

行垃圾回收 。 引用计数的策略是跟踪记录每个值被使用的次数 。 当声明了 一个变量并将

一个引用类型赋值给该变量的时候 , 这个值的引用次数就加 l 。 如果该变量的值变成了

另外 一个,则这个值的引用次数;或 l 。 当这个值的引用次数变为 0 的时候,说明没有变

量在使用,这个值没法被访问 。 因此 , 可以将它占用的空间回收 ,这样垃圾回收器会在

运行的时候清理引用次数为 0 的值占用的空间 。

在 IE 中虽然 JavaScript 对象通过标记清除的方式进行垃圾回收,但是 BOM 与 DOM 对象

是用引用计数的方式回收垃圾的 。 也就是说 , 只要涉及 BOM 和 DOM , 就会出现循环引用问题。


微信扫一扫分享资讯
相关推荐
暂无相关推荐
微信公众号
手机浏览

Copyright © 2022 All Rights Reserved 版权所有 豫商人才网 豫ICP备19004769号

地址:河南省商丘市睢阳区神火大道176号联合大厦13楼 EMAIL:postmaster@37jobs.com

用微信扫一扫