IE与Javascript中的内存积累

IE与Javascript中的内存积累,javascript,internet-explorer,memory,Javascript,Internet Explorer,Memory,这是测试URL 程序: 关闭所有IE实例 在IE7中打开URL 打开任务管理器,查找IE占用的内存 现在点击创建按钮 观察内存,它将跳跃大约2K 现在单击销毁按钮,DIV将被销毁,但内存保持不变 你可以反复尝试,记忆就会积累起来 有办法解决这个问题吗?有没有办法在不重新加载窗口的情况下强制调用垃圾收集器 我假设,当我删除DIV时,内存将被释放,但似乎不是这样工作的 请让我知道这方面的任何解决办法 谢谢你的帮助 Suhas是的,IE有一些可怕的内存泄漏 检查-你基本上必须设计你的网页,使他们不会

这是测试URL

程序:

  • 关闭所有IE实例
  • 在IE7中打开URL
  • 打开任务管理器,查找IE占用的内存
  • 现在点击创建按钮
  • 观察内存,它将跳跃大约2K
  • 现在单击销毁按钮,DIV将被销毁,但内存保持不变
  • 你可以反复尝试,记忆就会积累起来
  • 有办法解决这个问题吗?有没有办法在不重新加载窗口的情况下强制调用垃圾收集器

    我假设,当我删除DIV时,内存将被释放,但似乎不是这样工作的

    请让我知道这方面的任何解决办法

    谢谢你的帮助


    Suhas

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

    检查-你基本上必须设计你的网页,使他们不会做什么使IE像这样泄漏

    这是IE如此讨厌的部分原因


    为了避免IE泄漏,您必须非常小心地向页面添加HTML元素,尤其是表。对非HTML 3.2属性要特别小心-IE7基本上仍然是IE4,旧HTML规范之外的属性往往会出错。

    下面介绍如何在IE中创建DOM元素并防止内存泄漏

    function createDOMElement(el) {
      var el = document.createElement(el);
    
      try {
        return el;
      }
      finally {
        el = null;
      }
    }
    

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

    您在其他浏览器中尝试过这个实验吗?Firefox的内存消耗比我机器上的IE严重得多…

    感谢您的快速回复,但根据调查,没有检测到内存泄漏。似乎GC调用得不够频繁。有什么建议吗?javascript中的ThxGC相当糟糕——您肯定没有C#或Java中所期望的那种控制。Chrome和next FX速度如此之快的原因之一是因为他们做了正确的GC(最后)。我不确定这段代码做了什么,或者它有什么不同,但Daammm它工作得更好,我尝试用不同的ID打开3个div,内存保持不变,你是一个天才,非常感谢!!!!!!!!!!苏哈哈,欢迎你。区别在于函数中创建的元素没有被垃圾收集清除。无论在finally语句中发生什么,都将执行。所以,基本上你的卡住补丁IE的垃圾收集。整洁的把戏!我猜如果你将返回的el存储在调用代码中,你仍然必须手动销毁它?我得说,因为我正在以不同的方式在许多应用程序中测试它,它似乎工作得很好,非常非常酷,thx用于共享。+1-IE在过去5年中至少出现了javascript垃圾收集错误,在关闭浏览器之前不会释放内存-感谢您的解决方案!