JS垃圾回收机制
JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。
JS执行环境中的垃圾回收器怎样才能检测哪块内存可以被回收有两种方式:标记清除(mark and sweep)、引用计数(reference counting)。
简单来说,有2种情况,会被视为垃圾。
● 没有被引用的对象
● 几个对象相互引用形成闭环
那什么情况不会被视为垃圾呢?
● 全局变量(时刻待命)
● 有具体引用关系的对象(闭包)
function test(){
var a=1;
return function(){
console.log(++a);
}
}
test();
test();