考虑这个 HTML 页面:
http://jsbin.com/aYUcelo/1/ (我建议下载它以消除所有 jsbin 噪音)。
通过单击 GO 按钮,一个 div 被添加到正文中。RM 删除其中一个 div。它还将两种样式之一应用于新 div:
newDiv.style.color = "red";
// or
newDiv.style.WebkitTransform = "translate3d(0px, 0px, 0px)";
您可以在 chrome dev tools 内存时间轴中看到不断增长的节点数量,如果应用了 WebkitTransform,则 GC 无法删除。红色样式不会发生这种情况。
编辑:只是为了明确应用“红色样式”添加和删除 div 的操作是等效的节点数。
这种行为的原因是什么?我错过了重点吗?甚至没有 DOM 节点泄漏?
在这里您可以找到两条时间线记录: https ://docs.google.com/file/d/0B9S6doraVaWXdjRyWjluMW1BUlU (翻译) https://docs.google.com/file/d/0B9S6doraVaWXQVAwbFpfZzh1RVE(红色)
在这两个记录中,连续添加和删除 3 个 div,最后请求 GC。仅供参考:我有一个更复杂的 Angular 应用程序,但我可以找出内存泄漏到同一个问题。无论如何,我创建了这个更简单的示例。
编辑:时间线记录的两张图片: https ://docs.google.com/file/d/0B9S6doraVaWXMURzMjdhMWI0UDA https://docs.google.com/file/d/0B9S6doraVaWXWGhwVWhlMjN4dkE
编辑 2:运行 Windows 8 / Chrome 30.0.1599.69 m