垃圾收集器会按照固定的时间间隔周期性地进行垃圾收集,垃圾收集的问题是能否真的收集垃圾
1、标记清除
最常用,变量进入环境时,标记为”进入环境“,变量离开环境时,标记“离开环境”,只有标记为“离开环境”的变量才能进行垃圾收集,释放内存
2、引用计数
不常见, 存在循环引用问题,导致内存永远无法得到回收。
当声明了一个变量并将另一个引用类型的值赋给该变量时,则这个引用类型的值的引用次数为1,得了另一个值,则这个引用类型的值的引用次数减1,只有引用次数为0才能进行垃圾收集,由于低版本IE有一部分对象不是原生JS实现的,采用的垃圾收集策略从根本上就存在循环引用问题
var element = document.getElementById("some_element");
var myObject = new Object();
//循环引用问题
myObject .element = element;
element.someObject = myObject;