垃圾回收
JS中的垃圾回收
标记清除
垃圾收集器在运行时会给存储在内存中的所有变量都加上标记,然后去除掉环境中的变量以及被环境中的变量引用的变量的标记。而在此之后,被加上标 记的变量将被视为准备删除的变量。最后,垃圾收集器完成内存清除工作:销毁那些带标记的值并回收占用的空间。
引用计数
跟踪每个值被引用的次数。当声明了一个变量,并将一个引用类型值赋值给变量时,则这个值的引用数就是1。如果同一个值又被赋值给另一个变量, 则该值的引用次数加1。相反,如果包含对这个值的引用的变量又取得了另外一个值,则这个值的引用次数减1,当这个值的引用次数变为0时,等下次 垃圾回收器运行时,它就会释放那些引用次数为0的值所占用的内存。
哪些操作会造成内存泄露
内存泄漏指任何对象在您不再拥有或需要它之后仍然存在。
1.setTimeout的第一个参数使用字符串而非函数的话,会引发内存泄露。
2.闭包
3.控制台日志
4.循环引用