Javascript 更新图像导致IE8内存泄漏

Javascript 更新图像导致IE8内存泄漏,javascript,internet-explorer,debugging,dom,memory-leaks,Javascript,Internet Explorer,Debugging,Dom,Memory Leaks,我就是不明白为什么这段代码会在IE8中产生内存泄漏: ws.onmessage = function (e) { var img = document.getElementById("image"); img.src = 'data:image/jpeg;base64,'+e.data; //base64 encoded image img = null; e.data = null; e = null; } 我认为它是泄漏的,因为来自Javascript的Dom访问。当src属性被更改时,图

我就是不明白为什么这段代码会在IE8中产生内存泄漏:

ws.onmessage = function (e) {
var img = document.getElementById("image");
img.src = 'data:image/jpeg;base64,'+e.data; //base64 encoded image
img = null;
e.data = null;
e = null;
}

我认为它是泄漏的,因为来自Javascript的Dom访问。

src
属性被更改时,图像被附加到Dom,因此到每个数据URI的绑定被保留,直到用户离开页面为止。执行以下操作之一:

  • 首先从DOM中删除图像
  • 将虚拟图像存储在
    文档片段中,对其进行更新,然后将其附加到DOM中

如果您能够提供一个链接或小提琴,让我们可以看到您正在处理的症状,这将是有益的。单凭这段代码我们帮不了你多少忙!我不知道您怀疑什么在泄漏,但请记住,您的处理程序函数正在关闭外部环境,其中包括
ws
,因此实际上,您通过闭包得到了对
ws
的循环引用。这种闭包泄漏是旧版IE中的一个已知问题……甚至不确定这段代码在IE8中如何工作,因为它们的处理程序属性不将事件对象作为参数传递。