JS垃圾回收机制
Posted gouku
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS垃圾回收机制相关的知识,希望对你有一定的参考价值。
策略1:标记清除
当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。
-
垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记。
-
去掉环境中的变量以及被环境中的变量引用的变量的标记。
-
此后再被加上标记的变量将被视为准备删除的变量,因为环境中的变量已经无法访问到这些变量了。
策略2:引用计数
跟踪记录每一个值的引用次数,当声明了一个变量并将一个引用类型值赋给该变量的时候,这个引用类型的引用次数就是1,如果同一个值又被赋值给另一个变量,这个值的引用次数加1.如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1,当这个值引用次数为0的时候,就可以将这个引用值所占的内存空间回收回来。
缺点:
如果存在循环引用的情况,那么这个引用值占的空间就永远不会被回收。
以上是关于JS垃圾回收机制的主要内容,如果未能解决你的问题,请参考以下文章