JS垃圾回收机制

摘要:找出不再继续使用的变量,然后释放掉其占用的内存。当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。

原理:

找出不再继续使用的变量,然后释放掉其占用的内存。


策略1:标记清除

当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。

  1. 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记

  2. 去掉环境中的变量以及被环境中的变量引用的变量的标记。

  3. 此后再被加上标记的变量将被视为准备删除的变量,因为环境中的变量已经无法访问到这些变量了。


策略2:引用计数

跟踪记录每一个值的引用次数,当声明了一个变量并将一个引用类型值赋给该变量的时候,这个引用类型的引用次数就是1,如果同一个值又被赋值给另一个变量,这个值的引用次数加1.如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1,当这个值引用次数为0的时候,就可以将这个引用值所占的内存空间回收回来。

缺点:

如果存在循环引用的情况,那么这个引用值占的空间就永远不会被回收。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_2403