Javascript应用程序-内存泄漏
我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏。Javascript应用程序-内存泄漏,javascript,jquery,Javascript,Jquery,我开发了一个客户端应用程序,不幸的是我怀疑内存泄漏。 应用程序有很多私有克隆对象,在每个函数结束时,我通过将对象设置为null来处理这些对象。(foo=null;) 我的问题是,我应该如何处置这些物品? 使用foo=null就足够了吗 另外,是否有任何工具可以帮助我识别问题 解决方案 最后,我的问题是由于错误使用jquery进度条造成的 function updateProgressBar() { if (!handle) //by adding this, th
应用程序有很多私有克隆对象,在每个函数结束时,我通过将对象设置为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对象时,通常会发生这种情况 ChromeDeveloper工具允许您查看堆并检查仍在内存中但未通过使用的“堆分析器”的元素
但要解决实际问题,将属性设置为null就足以中断循环引用,并应修复内存泄漏。闭包可能有问题吗?您应该尝试当前浏览器提供的方法,比如Chrome
在任何情况下,您正在使用的一段代码都有助于识别问题。为什么您怀疑内存泄漏?我观察浏览器的进程并访问应用程序,一两分钟后内存急剧增加,最后我从浏览器收到一条消息,上面写着“内存不足”。也许我用错了“怀疑”这个词。正确的是,我确信:)看看chrome开发者工具。有一个堆快照,可以显示x时间消耗的内存量,并让您查看整个链。了解您在firefox和chrome中看到的浏览器会很有帮助。最后是jquery progrssBar()的错误使用。但是通过这个任务,我学会了如何识别内存泄漏:)你建议我的第二个url很好。很遗憾,第二个链接指的是一个有Mac电脑的用户。用户在Mac上所做的任何事情都应该被丢弃。傻麦克,把戏是给孩子们的@暗影编剧没有领会你的幽默:p