Javascript 更新图像导致IE8内存泄漏
我就是不明白为什么这段代码会在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属性被更改时,图
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中如何工作,因为它们的处理程序属性不将事件对象作为参数传递。