IE9以下的js引擎对非原生对象(如BOM,DOM)的垃圾回收会采用引用计数算法,会造成循环引用的bug。
例如:
var element = document.getElementById('id');
var obj = {};
obj.element = element;
element.obj = obj;
其中element与obj存在循环引用,所以element所占内存不会被自动回收。
可通过解除引用来解决:
obj.element = null;
element.obj = null;
这样垃圾回收器下次运行时就会回收这些内存了。