一个js内存泄露的好例子

原帖在这里:http://topic.csdn.net/u/20090531/20/e0d47c96-3eb6-45ca-b824-31dddedd58c5.html

我把楼主的例子改了一下,觉得这样写更紧凑!套用楼主的原话,当一个DOM对象包含一个Js对象的引用(例如一个Event Handler), 而这个Js对象又持有对这个DOM对象的引用时,一个环状引用就行成了,于是在ie下就出现了内存泄露。点击“运行代码”并打开任务管理器看内存变化。分别在ie8和ff下测试,差距不用多说。

运行代码 Memory leak

那么在ie下该怎么解决呢?

在删除节点的时候,手动破除环状引用,把里面setInterval那段代码稍微改动以下:

setInterval(function(){ q.push(makeSpan()); if(q.length>=10){ var s = q.shift(); if(s){ s.onclick = null;//关键在这里 s.parentNode.removeChild(s); } } n++; },10);

再用ie测试.

你可能感兴趣的:(Javascript)