Javascript 如何找到JS内存泄漏?
我在chrome中努力使用堆分析器,但它非常混乱。特别是如果里面有最小化的库。但即使是家庭成员的观点,可能无法删除的元素也非常不清楚 如何使用chrome中的堆转储来查找导致内存泄漏的JS代码、GC无法清理的代码,有什么提示吗。。。即使从dom中删除了元素,如何找到混乱的元素Javascript 如何找到JS内存泄漏?,javascript,google-chrome,Javascript,Google Chrome,我在chrome中努力使用堆分析器,但它非常混乱。特别是如果里面有最小化的库。但即使是家庭成员的观点,可能无法删除的元素也非常不清楚 如何使用chrome中的堆转储来查找导致内存泄漏的JS代码、GC无法清理的代码,有什么提示吗。。。即使从dom中删除了元素,如何找到混乱的元素 换句话说,如何正确读取chrome中的堆转储?支配者观点?比较?这是一篇关于如何使用Google Developer工具查找内存泄漏的非常好的帖子: 这是另一个关于这一点的好网页:谷歌为此开发了一个开源工具。他们还提出了一
换句话说,如何正确读取chrome中的堆转储?支配者观点?比较?这是一篇关于如何使用Google Developer工具查找内存泄漏的非常好的帖子:
这是另一个关于这一点的好网页:谷歌为此开发了一个开源工具。他们还提出了一种称为的方法(另请参见中的简要说明) 注意:不再支持jsleakcheck!它使用的是一种非官方且不稳定的Dev-Tools协议,用于获取堆快照。 协议正在制定中,但不够稳定,因此我 可以让jsleakcheck与各种Chrome版本一起工作。在里面 此外,一个较低级别的兼容性工具, 远程_inspector_client.py,jsleakcheck使用它进行通信 使用开发工具,已被删除。
在Chrome开发者工具中,有一个时间线-内存选项卡: 我们可以看到它占用的内存 还有配置文件-内存,我们可以在其中拍摄快照并查看其中的内容。快照可以相互比较: 大多数时候,它不会告诉你任何事情。但至少你可以看到哪些物体在堆积,可能还有泄漏的结构 另一种方法是使用
“任务管理器”
以下是一篇关于这方面的文章:
我觉得这篇文章很有见解:
它涵盖了大量的chrome开发者工具,并很好地解释了当应用程序出现内存问题时如何处理。如果您正在开发客户端可重用脚本对象,您迟早会发现自己发现内存泄漏。很可能你的浏览器会像海绵一样吸吮内存,你很难找到一个原因来解释为什么你可爱的DHTML导航在访问了你网站中的几个页面后响应能力会严重下降 微软开发人员贾斯汀·罗杰斯(Justing Rogers)在他的优秀文章中描述了IE泄漏模式 在本文中,我们将从稍微不同的角度来回顾这些模式,并用图表和内存利用率图表来支持它。我们还将介绍几个更微妙的泄漏场景。在我们开始之前,如果你还没有读过这篇文章,我强烈建议你阅读这篇文章 为什么内存泄漏? 内存泄漏问题不仅限于Internet Explorer。如果您提供足够的条件,几乎任何浏览器(包括但不限于Mozilla、Netscape和Opera)都会泄漏内存(这并不难,我们很快就会看到)。但是(以我的拙见,ymmv等)Internet Explorer是泄密者之王 别误会我。我不属于那些大喊“嘿,IE内存泄漏,检查这个新工具[链接到工具],自己看看”的人群。让我们讨论一下Internet Explorer有多糟糕,并掩盖其他浏览器中的所有缺陷” 每个浏览器都有自己的优缺点。例如,Mozilla在初始启动时消耗了太多内存,在字符串和数组操作方面不太好;如果您编写了一个极其复杂的DHTML脚本,使其渲染引擎混乱,Opera可能会崩溃 虽然我们将重点讨论Internet Explorer中的内存泄漏情况,但此讨论同样适用于其他浏览器 下面是关于内存泄漏概念的完整示例说明
Chrome现在提供了比大多数答案出现时更好的查找内存泄漏的工具 下面是使用最新的Chrome浏览器查找javascript内存泄漏的步骤:
window.performance.memory:
MemoryInfo {
totalJSHeapSize: 7084834,
usedJSHeapSize: 6486770,
jsHeapSizeLimit: 4294705152
}
window.performance.memory.usedJSHeapSize / window.performance.memory.jsHeapSizeLimit