有道理,你嘗試檢查你的頁面after
功能的源已恢復?有沒有更多的身體標記 - 它是你的事件監聽器(或仍然可以在內存中,無用地搖晃)。
嘗試將其附加到window
。
window.onresize = function()
{
document.write((this.innerWidth/this.innerHeight)*100+'%');
};
現在在以前非常流行的瀏覽器的舊版本(將事件監聽器附加到窗口對象)導致內存泄漏。窗口對象從未真正銷燬more info here if you need it。
如何解決mem問題?
(function(win)
{
win.onresize = function()
{
document.write((this.innerWidth/this.innerHeight)*100+'%');
};
if (win.attachEvent)
{
win.attachEvent('onbeforeunload',(function(self)
{
return function freeMem()
{
self.onresize = null;
self.detachEvent('onbeforeunload',freeMem);
};
})(win));
return;
}
win.addEventListener('beforeunload',(functio(self)
{
return function freeMem()
{
self.onresize = null;
self.removeEventListener('beforeUnload',freeMem,false);
};
})(win),false);
})(this);//this points to current window
我知道,看起來可怕,但我測試過這一點,它做的伎倆 - 感謝您的IE瀏覽器。嚴格來說,通過win
到self
的關閉可以省略,但我保留在那裏以確保一旦onbeforeunload
事件觸發,並且處理程序返回所有函數和引用都不在範圍之內,所以GC的有沒有理由不是釋放內存。
在大多數情況下它是過度殺傷性的,但是如果有人在意,我決定在這裏發佈它:-P