我开始跟踪我的网络游戏中的一些内存泄漏。我发现了一个重复出现的 DOM 节点泄漏模式,但我不明白为什么。我不是使用 chrome 开发工具的专家,但我正在学习。
我可以设置的最小示例是:
<div id = "main">
</div>
<button onclick ='reset();'> test </button>
<script>
function reset()
{
var Div = "<select></select>";
$("#main").html(Div);
}
</script>
在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/