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