浅谈垃圾回收机制

156 阅读1分钟

本文已参与 「新人创作礼」活动, 一起开启掘金创作之路。

R-C.jpg

javaScript 的垃圾回收机制

其中的基本思路就是: 确定哪个变量不会再使用, 然后释放其占用的内存, 这就是垃圾回收的思想.
在浏览器的发展史上用到两种主要的标记策略: 标记清理和引用计数。

  1. 标记清理: JavaScript 最常用的垃圾回收策略就是 标记清理 垃圾回收程序运行的时候, 会标记内存中存储的所有的变量, 然后它会将所有的上下文中的变量, 以及被上下文引用的变量的标记去掉, 在此之后再被加上标记的的变量就是待删除的了, 原因就是任何在上下文中的变量都访问不到他们了.随后垃圾回收程序做一次内存清理, 销毁带有标记的所有值并且回收他们的内存.

  2. 引用计数: 其思路就是记录每个值被引用的次数, 声明变量并且赋一个引用值, 那么这个值的引用数就是为 1 , 如果同一个值又被赋给另一个变量, 那么引用数加 1 , 但是如果保存对该值的变量被其他值给覆盖了, 那么引用数就 -1 当一个值的引用数为 0 的时候, 就说明无法访问到这个值了, 所以就可以安全的回收他的内存了. 垃圾回收程序下次运行的时候就会释放引用数为 0 的值的内存.