我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏
应用程序有很多私有克隆对象,在每个函数的末尾我通过将对象设置为null来处置对象。 (foo = null;
)
我的问题是,我应该如何处理这些物品?
是否足以使用foo = null
?
此外,是否有任何工具可以帮助我找出问题?
解
最后我的问题是由于错误使用了jquery进度条而导致的
function updateProgressBar() {
if (!handle) //by adding this, the problem solved.
return;
jQuery("#progressbar").progressbar({
value: ++pct
});
if (pct >= 100) {
clearInterval(handle);
pct = 0;
setInterval("updateProgressBar()", 300);
}
}
答案 0 :(得分:3)
浏览器中内存泄漏的主要原因是DOM和JavaScript对象之间存在循环链接。当孤立的DOM节点仍然引用事件处理程序或其他JS对象时,通常会发生这种情况。 http://code.google.com/chrome/devtools/docs/heap-profiling-dom-leaks.html
Chrome开发者工具可让您查看堆并检查仍在内存中的元素,但不是通过使用的“堆分析器”http://gent.ilcore.com/2011/08/finding-memory-leaks.html
但是要解决实际的答案,将属性设置为null足以打破周期性引用并修复内存泄漏。
答案 1 :(得分:0)
可能是关闭问题吗?您应该尝试当前浏览器提供的方法,例如Chrome的Speed Tracer。
在任何情况下,您使用的代码片段都有助于识别问题。