javascript - 非常小的 jsfiddle 的 DOM 泄漏与 jquery

标签 javascript jquery dom memory-leaks

我开始跟踪我的网络游戏中的一些内存泄漏。我发现了一个重复出现的 DOM 节点泄漏模式,但我不明白为什么。我不是使用 chrome 开发工具的专家,但我正在学习。

我可以设置的最小示例是:

<div id = "main">
</div>

<button onclick ='reset();'> test </button>

<script>
function reset()
{
    var Div = "<select></select>";
    $("#main").html(Div);
}
</script>

JSFIDDLE LINK

在chrome中,当我使用开发工具和时间线时,我们可以看到:

  • 我们在加载 jsfiddle 页面时得到了 X 个 DOM 节点
  • 如果我们使用“测试”按钮一次,我们得到 X+2 个节点
  • 每次后续使用都会增加 3 个节点

这些节点永远不会被 GC 处理,我不明白为什么。使用 <option> 时问题更严重在<select>里面(这似乎与父节点没有得到 GC 的事实相一致)。 <input> 的问题也一样。据我所知(至少有复选框和 radio )。

这看起来很简单,我显然错过了一些简单的东西,但它是什么超出了我的范围。

您有什么想法可以解决这个问题吗?我尝试过使用堆快照,但由于我还没有完全理解它,所以我没有得到任何结果。

编辑:编辑以解决问题,因为我还没有找到答案。

最佳答案

我最近在使用 Chrome 43 时也遇到了这个问题。它似乎是 Chrome 本身的一个错误,并在 Chrome 46 中得到修复 ( Chrome Canary )

关于javascript - 非常小的 jsfiddle 的 DOM 泄漏与 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30888819/

相关文章:

java - XML结构的复杂度对解析速度有影响吗?

java - NO_MODIFICATION_ALLOWED_ERR : An attempt is made to modify an object where modifications are not allowed

Javascript 给出 InvalidCharacterError

javascript - cmake/OpenCVCompilerOptimizations.cmake:505(消息)的CMake错误:编译器不支持基准优化标志

javascript - JQuery event.target 错误

PHP 代理 jQuery 部分到 javascript

javascript array.splice() 不删除数组中的元素?

javascript - Testcafe过滤功能

javascript - 为什么 Flow 不理解可为 null 的属性与不可为 null 的对象属性兼容?

javascript - 如何阻止 Bootstrap 模式打开?