在Javascript中的IE和内存累积

时间:2009-02-06 15:19:08

标签: javascript internet-explorer memory

这是测试网址

http://edventures.com/temp/divtest.php

步骤:

  1. 关闭所有IE实例。
  2. 在IE7中打开网址
  3. 打开任务管理器,查找IE消耗的内存
  4. 现在点击“创建”按钮,
  5. 观看内存会大约增加2K
  6. 现在点击Destroy按钮,DIV将被销毁,但内存保持不变。
  7. 你可以反复尝试,记忆只是加起来。
  8. 有什么方法可以解决这个问题吗?有没有办法在不重新加载窗口的情况下强行调用垃圾收集器?

    我假设当我删除DIV时,内存将被释放,但似乎不会那样工作。

    请告诉我任何解决方法。

    感谢您的帮助。

    苏哈斯

3 个答案:

答案 0 :(得分:10)

以下是如何在IE中创建DOM元素并防止内存泄漏。

function createDOMElement(el) {
  var el = document.createElement(el);

  try {
    return el;
  }
  finally {
    el = null;
  }
}

您可以使用try / finally技巧的变体来防止在执行其他DOM操作时发生泄漏。

答案 1 :(得分:0)

是的 - IE有一些可怕的内存泄漏。

查看IE Drip - 你基本上必须设计你的页面,这样他们就不会做出让IE泄漏的事情。

这就是为什么IE如此厌恶的部分原因。

为避免IE泄漏,您必须非常小心如何向页面添加HTML元素,尤其是表格。特别注意非HTML 3.2属性 - IE7仍然基本上是IE4,旧HTML规范外部的属性是它往往出错的地方。

答案 2 :(得分:0)

您是否在其他浏览器中尝试过此实验? Firefox的内存消耗比我机器上的IE差很多......