js就像java一样拥有自动分配内存+垃圾回收机制
在写代码的时候不注意就会造成内存泄漏
解决方案:
1.引用计数算法
var a={ a:1}//计数1
var b=a;//计数2
a=null;//计数1
b=null;//计数0
提升释放内存
2.标记清除算法
但是引用计数算法是有缺陷的,当发生循环引用的时候就没法释放内存了
例如:
var obj1={};
var obj2={};
obj1.a=obj2;
obj2.a=obj1;
这个时候形成了一个锁,所以很多浏览器不支持引用计数算法了
所以这个算法就是从window找不到的数据都标记为垃圾,把要回收的对象包在局部中就可以回收了比如:
function a (){
var obj1={};
var obj2={};
obj1.a=obj2;
obj2.a=obj1;
}