我有一个 Web 应用程序在某处存在内存泄漏,但我无法检测到它。我已经尝试过通常运行良好的 Chrome 开发人员工具,但我无法追踪负责的代码行。Chrome 工具只是给了我太多信息,我无法将内存中的对象与我的代码相关联。
还有其他可能有用的工具吗?
我有一个 Web 应用程序在某处存在内存泄漏,但我无法检测到它。我已经尝试过通常运行良好的 Chrome 开发人员工具,但我无法追踪负责的代码行。Chrome 工具只是给了我太多信息,我无法将内存中的对象与我的代码相关联。
还有其他可能有用的工具吗?
更新: 让我们使用记录堆分配配置文件类型。
请参阅截屏视频Javascript 内存泄漏检测 (Chrome DevTools)
是: 您可以使用下一个场景来解决内存泄漏问题。
之后,您将看到 objects 一组泄漏的对象。您可以选择一个对象并查看对象的保留树中的保留者列表
使用Heap Profiler的Detached DOM 树视图中元素的 innerHTML 和 outerHTML 值将内存中的对象映射到您的代码并跟踪内存泄漏。
jQuery ajax 请求是我的应用程序中最大的罪魁祸首。找到所有 ajax jQuery 函数:.ajax()、.get()、.post() 和内容设置器:.html()、.text()。
转到开发工具中的网络选项卡,刷新当前页面 10 到 20 次。如果你看到事情堆积得太频繁,或者调用没有完成,你就有内存泄漏。
这是我最近能够用 jQuery.load() 解决的内存泄漏...
if(!jQuery.terms_html)
$('#tc_container').load(STATIC_DOMAIN + '/terms.html', function() { jQuery.terms_html = $('#tc_container').html() })
else
$('#tc_container').html(jQuery.terms_html)
此外,在撰写本文时,最新版本的 jQuery 是3.3.1。如果可能的话,安装最新版本是最好的开始方式。 https://github.com/jquery/jquery/releases