JS内存泄漏
最近用JS写了一个控件----div模拟弹出窗口.之前发布过一个版本,网友说有很严重的内存泄漏问题,经过此次修改,已经解决了此问题.对于JS的内存泄漏很很奇怪,一直都没有想过有此问题,也许是只会做java吧,很少考虑内存释放的问题.针对此问题,特意在网上找了一些资料.摘录如下.1.内存泄漏检测工具.http://outofhanwell.com/ieleak/index.php?title=Main_Page
说明文档:https://ieleak.svn.sourceforge.net/svnroot/ieleak/trunk/drip/docs/index.html
2.如何修正JS的内存泄漏,一些教程:http://outofhanwell.com/ieleak/index.php?title=Fixing_Leaks
1)function loadMyPage() {
var elem = document.getElementById('myelement');
elem.onclick = function () {
window.alert('hi!');
};
}
这段代码就能引起JS的内存泄漏,如果修正:elem = null;
或者
function onMyElemClick() {
window.alert('hi!');
}
function loadMyPage() {
var elem = document.getElementById('myelement');
elem.onclick = onMyElemClick;
}
2). function Helper(elem)
{
this.elem = elem;
}
var elem = document.getElementById('elem');
elem.helper = new Helper(elem);
var parent = document.getElementById('parent');
var child = document.getElementById('child');
// make it easy to find one from the other
parent.other = child;
child.other = parent;
以上两段代码都会引起内存泄漏.
3)如果将一个element从一个elemeng删除最好用 innerHTML="". 如下:
function discardElement(element) {
var garbageBin = document.getElementById('IELeakGarbageBin');
if (!garbageBin) {
garbageBin = document.createElement('DIV');
garbageBin.id = 'IELeakGarbageBin';
garbageBin.style.display = 'none';
document.body.appendChild(garbageBin);
}
// move the element to the garbage bin
garbageBin.appendChild(element);
garbageBin.innerHTML = '';
}
页:
[1]