Javascript 使用jquery的DOM泄漏非常小

Javascript 使用jquery的DOM泄漏非常小,javascript,jquery,dom,memory-leaks,Javascript,Jquery,Dom,Memory Leaks,我开始跟踪我的网络游戏中的一些内存泄漏。我发现一个重复出现的模式正在泄漏DOM节点,但我不知道为什么。我不是使用chrome开发工具的专家,但我正在学习 我能举的最小的例子是: <div id = "main"> </div> <button onclick ='reset();'> test </button> <script> function reset() { var Div = "<select><

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

我能举的最小的例子是:

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

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

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

试验
函数重置()
{
var Div=“”;
$(“#main”).html(Div);
}

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

  • 加载JSFIDLE页面时,我们得到了X个DOM节点
  • 如果我们使用“测试”按钮一次,我们得到X+2个节点
  • 每次后续使用都会添加3个节点
这些节点从未被GC’ed,我不明白为什么。如果在
中使用
(这似乎与父节点没有得到GC'ed这一事实相一致),则问题更严重。就我所见,
的问题也一样(至少有复选框和收音机)

这看起来很简单,我显然错过了一些简单的东西,但什么是我无法理解的

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


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

这会在脱离连接的DOM树中生成元素-更好的解释。 这些元素是C++对象而不是JS对象。
我同意每次点击都会创建节点,但只要我用合适的按钮强制GB,就可以看到它直线下降。

我最近在使用Chrome 43时也遇到了这个问题。这似乎是chrome本身的一个bug,在Chrome46()中修复了它。

在前面的JSFIDLE示例中。。。无论我按多少次按钮,我只能观察一个select元素button@noobed您需要使用开发工具来查看内存中的节点每次单击都在增加。您能提供一个屏幕截图吗?@noobed。线形图上的绿线显示节点数。强制GC似乎对在我的提琴部分创建的节点没有任何影响,它主要影响主提琴页面的节点(不是我的代码)。要看到这一点,只需运行几次,您就会看到最小的节点数始终会增加3个,每次单击您所做的测试按钮。你无法找回它们。你找过@吗?关于调试和使用dev工具,本文尽可能完整@mydiI仍然在我的浏览器中打开了页面:)我读了很久,我想我理解了基本知识,但找不到如何将我读到的应用到我的案例中。我漏了一块拼图。我尝试使用3快照技术,但在前两步之间找不到任何htmlnode。这是一个有趣的问题。。几个小时后就可以开始悬赏了。