跟踪JavaScript内存泄漏的工具

跟踪JavaScript内存泄漏的工具,javascript,memory-leaks,google-chrome-devtools,Javascript,Memory Leaks,Google Chrome Devtools,我有一个web应用程序,它的某个地方有内存泄漏,我无法检测到它。我已经尝试了Chrome开发者工具,这些工具通常工作得很好,但我无法找到负责的代码行。Chrome工具给了我太多的信息,我无法将内存中的对象与代码联系起来 是否有其他可能有用的工具?使用视图中元素的innerHTML和outerHTML值将内存中的对象映射到代码并跟踪内存泄漏。更新: 让我们使用记录堆分配配置文件类型 开放式devtools探查器 做一个热身动作 启动分析器 重复动作几次 如果操作有泄漏,您将在概览窗格中看到相同数量

我有一个web应用程序,它的某个地方有内存泄漏,我无法检测到它。我已经尝试了Chrome开发者工具,这些工具通常工作得很好,但我无法找到负责的代码行。Chrome工具给了我太多的信息,我无法将内存中的对象与代码联系起来


是否有其他可能有用的工具?

使用视图中元素的innerHTML和outerHTML值将内存中的对象映射到代码并跟踪内存泄漏。

更新: 让我们使用记录堆分配配置文件类型

开放式devtools探查器 做一个热身动作 启动分析器 重复动作几次 如果操作有泄漏,您将在概览窗格中看到相同数量的蓝色条组 停止分析器 在概述中选择一组蓝色条 查看对象列表 请看电影放映

是: 您可以使用下一个场景来修复内存泄漏

开放式devtools探查器 做一个泄漏的动作 拍摄堆快照 重复步骤2和3次 选择最新的堆快照 将筛选所有对象更改为快照1和快照2之间的对象 之后,您将看到一组泄漏的对象。
您可以选择一个对象并查看对象的保留树中的保留者列表

jQuery ajax请求是我的应用程序中最大的罪魁祸首。找到所有ajax jQuery函数:.ajax、.get、.post和内容设置程序:.html、.text

转到开发工具中的网络选项卡,刷新当前页面10到20次。如果您看到事情堆积得太频繁,或者调用未完成,则表明内存泄漏

这是我最近用jQuery解决的一个内存泄漏

如果!jQuery.terms\u html $'tc\u container'.loadSTATIC\u DOMAIN+/terms.html',函数{jQuery.terms\u html=$'tc\u container.html} 其他的 $'tc\u container'.htmljQuery.terms\u html

此外,撰写本文时jQuery的最新版本是3.3.1。如果可能的话,安装最新版本是开始的最佳方式。

可能的重复通常您只知道是谁将泄漏的对象添加到容器中,因为这是您的代码。但是如果您不知道,那么您可以使用泄漏对象类的新构造函数覆盖构造函数,该对象类记录堆栈跟踪并调用原始跟踪,直接从控制台调用。重复这些步骤并查看对象中的分配堆栈跟踪。它可以给你一个线索,泄漏对象的来源是什么,哪些代码应该删除对泄漏对象的最后尊重。jQuery ajax请求是我应用程序中最大的罪魁祸首。找到所有ajax jQuery函数:.ajax、.get、.post和内容设置程序:.html、.text。转到开发工具中的网络选项卡,刷新当前页面10到20次。我在我的一页JS应用程序中使用jQuery.load解决了最近的内存泄漏问题。。。如果jQuery.terms\u html$'tc\u container'.loadSTATIC\u DOMAIN+/terms.html',函数{jQuery.terms\u html=$'tc\u container.html}else$'tc\u container'.htmljQuery.terms\u html