好的,我有一个包含一些内容的列表,这就是为什么我的附加组件使用了大量内存的原因。
1 - 使用try / catch可以增加内存使用量吗? 例如:
try{
if(!condition) throw "Message";
//some code
}catch(ex){}
如果这是问题,我正在考虑使用:
(function(){
if(!condition) return;
})();
2 - 使用带有base64的图像也可以提高内存使用率吗?
<img src="data:image/png;base64,[...]==" />
或者没有问题?
3 - 我使用函数来处理ajax结果,所以我可以使用responseXML ...
if (o.readyState != 4) return;
var newdoc = document.implementation.createDocument(null, null, null);
var newhtml = document.createElement('div');
newhtml.innerHTML = o.responseText.replace(/script/ig, "");
newdoc.appendChild(newhtml);
newdoc.getElementById('...');
我不能使用jquery,这是我发现使用responseXML的最简单方法,但也可能导致内存泄漏。
4 - 取消设置变量,有所帮助或无益吗?
var a = "something";
if(a=="something")
//
//I'm not going to use the variable "a" anymore, so..
a = undefined; //Now i unset the variable
5 - 如果向元素添加事件,或者使用appenChild,则会增加内存。
element.appendChild(newelement);
如果更改页面,看起来内存仍然相同..如果我使用
window.addEventListener("unload", function() {
element.removeChild(newelement)
}
这也有帮助?
感谢。
对不起英文。
答案 0 :(得分:0)
4日和5日。
浏览器真的会增加每个附加事件\元素的内存,但在某些事件\元素被删除后不会立即减少它。
在垃圾收集中,每个浏览器都有“Dao”:):
IE 6-8根本不清除内存(直到你关闭它或按F5)。
Chrome最多需要5分钟才能运行垃圾收集器,或者垃圾邮件大小达到固定数量时。
Opera“吃”了比任何其他浏览器更多的内存,但在它变得不需要之后立即释放它。
最快的是FF将近1分钟,以清除未使用数据的内存。