IE内存泄漏 - settimeout,重复设置innerHTML

时间:2011-08-15 16:18:45

标签: internet-explorer memory-leaks settimeout innerhtml

我有一个应用程序,每60秒重绘一次页面的一部分。重绘会导致IE中的主要内存泄漏。

我尝试使用settimeout / setinterval来设置重绘计时器。

我也尝试了许多建议的提示,如

  • 设置innerHTML =''而不是使用jquery remove / empty。
  • 在重绘HTML之前删除所有事件处理程序。
  • 在清空父容器之前删除所有子节点。
  • 将outerHTML设置为clear而不是innerHTML

尽管如此,我仍然可以看到很大的内存泄漏。 MS KB文章似乎表明IE 8本质上是泄漏,我们需要应用修补程序:http://support.microsoft.com/kb/975623

但是,我已经在IE7中看到了这个问题,并且在firefox中也看到了这个问题。

非常感谢任何帮助。

谢谢, Suchin

1 个答案:

答案 0 :(得分:0)

您提到的所有选项都值得一试,您是否还尝试先添加DOM元素,然后再设置innerHTML?

这是一个例子 http://ecmascript.stchur.com/blogcode/ie_innerhtml_memleak/noleak.html

那家伙的解决方案

   // Add the element to the DOM first, and /then/ set .innerHTML to 
   // prevent memory from leaking.
   document.body.appendChild(elem);
   elem.innerHTML = str;

你是如何删除所有处理程序的?你使用像克罗克福德的清洗解决方案吗? http://javascript.crockford.com/memory/leak.html