DOM 个节点未被垃圾回收

DOM nodes not garbage collected

我对使用 Chrome 的开发人员工具调试单页 Web 应用程序中的内存泄漏有疑问。

根据 Google 的 documentation,拍摄堆快照后,您将看到红色和黄色分离的 DOM 节点。黄色节点是 JavaScript 仍在引用的节点,有效地代表了泄漏的 原因 。 JavaScript 中没有直接引用红色节点,但它们仍然是 "alive" — 可能是因为它们是黄色节点的 DOM 树的一部分。

我已经能够通过向下钻取我的堆快照中的所有黄色节点并找到我们的代码中仍有对它们的引用的位置来修复多个内存泄漏。但是,现在我遇到了一个我不确定如何处理的情况:只有红色节点出现在我的堆快照中!

如果没有 JavaScript 对这些节点的引用,它们不会被垃圾回收的其他一些原因是什么?另外,为什么说有155个条目却只显示60个?我想知道 Chrome 是否只是没有显示一个或多个黄色节点:

根据您的要求,将其添加为答案。您是否查看了这些 DOM 元素中的任何一个的更多详细信息以查看它们是哪些 DOM 元素,也许这为您提供了关于哪些代码曾经引用过它们的线索。使某些人绊倒的参考来源之一是您已完成但由于某种原因仍然存在的闭包。