JS垃圾回收机制
原理:找出不再继续使用的变量,然后释放掉其占用的内存。 策略1:标记清除 当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。 垃圾收集器在运行的时候会给存储在内存中的 所有变量都加上标记 。 去掉 环境中的变量以及被环境中的变量引用的变量 的标记。 此后 再被加上标记的变量 将被视为准备删除的变量,因为环境中的变量已经无法访问到这些变量了。 策略2:引用计数 跟踪记录每一个值的引用次数,当声明了一个变量并将一个引用类型值赋给该变量的时候,这个引用类型的引用次数就是1,如果同一个值又被赋值给另一个变量,这个值的引用次数加1.如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1,当这个值引用次数为0的时候,就可以将这个引用值所占的内存空间回收回来。 缺点: 如果存在循环引用的情况,那么这个引用值占的空间就永远不会被回收。 来源: https://www.cnblogs.com/GouKu/p/10544532.html