定义:在javascript中,每隔一段时间,执行环境会自动清除一些没有用的变量,以此释放内存。
js实现垃圾回收机制一般有两种方法:
1.标记清除法(绝大多数浏览器的方法)
声明变量时,将该变量标记为“进入环境”,当变量离开环境时,将其标记为“离开环境”,垃圾回收机制会给所有的变量都加上标记,将环境中的变量和被环境中的变量引用的变量的变量(闭包)保留,将剩下的变量全部销毁并回收内存。
2.引用计数法
当声明了一个变量并将一个引用类型的值赋给该变量时,则这个值的引用次数就是 1,如果这个值又被另一个变量引用,则该值的引用次数加 1。如果引用关系解除了,则这个值的引用次数就减 1。而垃圾回收机制会判断一个变量的值引用次数是否为0,如果为0,就被当成无用变量给回收掉,如果不为0,则不对该变量做任何的处理。
注:循环引用时,变量的引用次数就不为0,垃圾回收机制无法执行,会造成内存泄漏。