(1)、JS垃圾回收原理:
1、找出不再使用的变量
2、释放其占用的内存
3、固定的时间间隔运行
(2)、变量生命周期:
局部变量只在函数执行过程中存在。
<script type="text/javascript">
function test1(){
var a = 1;
return function(){
a++;
console.log(a);
}
}
var test = test1();
test();
test();
test = null; //闭包的解除引用
test();
</script>
标记清除 mark and sweep
垃圾回收器在周期性执行的过程中,首先要做的就是排除
全局变量,闭包所形成的那些AO里面的变量,
剩下的变量就被视为要删除的变量。
记住标记清除就可以
引用计数 reference counting(不常用)
function test(){
var a = new Object(); // a = 1
var b = new Object(); // b = 1
// var c = a; // a = 2
// var c = b; // a = 1
//循环引用 如果不解除a b的引用,a 和 b永远都是2
a.prop = b; // a = 2
b.prop = a; // b = 2
a = null; //解除引用
b = null;
}