Javascript 关闭时销毁JQuery UI对话框时出现大量IE7内存泄漏

Javascript 关闭时销毁JQuery UI对话框时出现大量IE7内存泄漏,javascript,jquery,jquery-ui,memory-leaks,Javascript,Jquery,Jquery Ui,Memory Leaks,我到处寻找答案,甚至是对这个特定问题的提及都没有结果。我使用的是jQueryUI1.8.7和jQuery1.5.1。我有一个对话框,我不仅要在关闭时销毁它,还要在关闭时从DOM中删除它。这在Firefox中运行良好。然而,当我在IE7中做同样的事情时,我看到浏览器的内存使用量增加了6MB,直到我完全关闭浏览器,这些内存才被回收。所以我的第一个想法是,我的对话中有东西导致内存泄漏。我剥离了我要添加的所有内容,并使用以下代码创建了一个简单的对话框: $('<div id="testMe">

我到处寻找答案,甚至是对这个特定问题的提及都没有结果。我使用的是jQueryUI1.8.7和jQuery1.5.1。我有一个对话框,我不仅要在关闭时销毁它,还要在关闭时从DOM中删除它。这在Firefox中运行良好。然而,当我在IE7中做同样的事情时,我看到浏览器的内存使用量增加了6MB,直到我完全关闭浏览器,这些内存才被回收。所以我的第一个想法是,我的对话中有东西导致内存泄漏。我剥离了我要添加的所有内容,并使用以下代码创建了一个简单的对话框:

$('<div id="testMe">hello</div>').dialog({
    modal: true,
    autoOpen: true,
    close: function() { $(this).dialog('destroy'); }
});
$('hello')。对话框({
莫代尔:是的,
自动打开:对,
关闭:函数(){$(this).dialog('destroy');}
});
打开此对话框时,请关闭它,然后刷新浏览器。我总是比以前多出约6MB的内存。如果打开此对话框,但在关闭之前刷新浏览器,则根本看不到任何内存峰值。我不知道是什么原因导致了这种情况——我发现了一些关于jQueryUI内存泄漏的线程,但是没有一个修复程序能够解决我的问题

我还认为我的项目中可能还有其他代码在妨碍我。事实并非如此——如果我使用这个JSFIDLE示例做同样的事情,我也会得到一个内存峰值!(). 在这一点上,我不知道还能转向哪里,或者还能做什么。我需要销毁这些对话框并将它们从DOM中删除—在我们(非常大)的应用程序中,已经有相当多的对话框实例依赖于这样一个事实,即关闭后对话框Div不再位于DOM中

编辑:更改模式标志的值无效。此外,我意识到我的示例并没有从DOM中删除元素。不管我是否这样做,内存泄漏仍然存在。我实际项目中的代码只是使用$(this).remove()从dom中删除元素。我简化了这个例子,因为真正的问题是“destroy”调用留下了某种循环引用,或者导致了我提到的6MB内存峰值

编辑:在进一步研究之后,我使用的jQueryUI小部件似乎并不重要(我尝试了对话框、我自己的自定义小部件和按钮)。只要我从DOM中删除小部件引用的元素,我就会看到IE7中的巨大内存泄漏。如果将元素移动到DOM中的其他位置,也会发生内存泄漏。我尝试创建一个“垃圾桶”DIV,将对话框中的所有内容移动到该DIV中,而不是完全删除它们,同样的情况也发生了

任何帮助或指导都将不胜感激。提前谢谢各位

$('hello')。对话框({
$('<div id="testMe">hello</div>').dialog({
    modal: true,
    autoOpen: true,
    close: function() { $(this).dialog('destroy').remove(); }
});
莫代尔:是的, 自动打开:对, 关闭:函数(){$(this).dialog('destroy').remove();} });

这将完全从DOM中删除该对话框,我不确定为什么会发生这种情况。自从IE启动以来,IE就一直有奇怪的bug。最好的选择是将jQuery库升级到最新版本。如果这不起作用,你可以尝试一下,这其实并不难


问题可能在于,从DOM中删除元素似乎有问题。在这种情况下,您可以重新使用dialog对象和元素,这样就不需要
.remove()
它。

您可以在没有modal=true的情况下进行测试吗(对不起,没有IE)-正如在这里的so问题中->将modal设置为false会在显示对话框时删除初始内存峰值。但是,刷新网页时仍会增加~6MB。您是否在jQuery tracker上提交了一个bug?我还没有添加bug…一旦输入了一个bug,我会将其链接到此处。这个问题已经安静了一段时间。有人在这方面取得了任何进展吗?请参阅我对原始帖子的编辑。从DOM中删除元素不是问题所在。问题是为什么IE7在销毁对话时会出现如此巨大的内存泄漏?为什么会进行否决投票?如果你不同意,我想听听你的意见。