原理
js的垃圾回收,是执行环境在运行代码时,同时进行管理的,这为开发者减轻很大的负担.
通过自动内存管理实现内存的分配和闲置资源的回收.
基本思路是这样的:
确定那个变量不再使用,然后释放其占用的内存,这个回收过程是周期行的,每隔一段时间就会执行一次.
比如吧:
当运行一个函数时,栈或堆就会分配空间保存相应的值.当变量使用完成后,就不再被需要,它占用的内存就要被释放,供后面的变量使用.但很多时候变量的使用与否不会这么简单.垃圾回收程序必须标记那个变量还会使用,那个变量不再使用,便于回收.
在浏览器发展历史上,有两种标记策略: 标记清理和引用计数.
标记清理(重点)
垃圾回收程序运行时,会标记内存中存储的所有变量(标记方法有多种).然后他会将所有在作用域的变量,以及被变量引用的变量的标记去掉.在此之后,被标记的变量就等待被删了.随后垃圾回收机制会运行一次,清理标记的值且收回被占用的内存.
引用计数(了解)
它的思路是对每个值都记录它被引用的次数,但是弊端太多已经被放弃.