我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏。
该应用程序有很多私有(private)克隆对象,在每个函数结束时,我通过将它们设置为 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);
}
}
最佳答案
浏览器内存泄漏的主要原因是当您在 DOM 和 JavaScript 对象之间存在循环链接时。主要发生在孤立的 DOM 节点仍然引用事件处理程序或其他 JS 对象时。 http://code.google.com/chrome/devtools/docs/heap-profiling-dom-leaks.html
Chrome 开发人员工具可让您查看堆并检查仍位于内存中但未通过使用的“Heap Profiler”的元素 http://gent.ilcore.com/2011/08/finding-memory-leaks.html
但要解决实际问题,将属性设置为 null 足以打破循环引用并应该修复内存泄漏。
关于Javascript 应用程序 - 泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826261/