jQuery 3.1.1内存泄漏appendTo和空

时间:2017-04-27 08:26:18

标签: javascript jquery memory-leaks

我在代码中发现内存泄漏,看起来像下一个代码段

function random() {
  return Math.floor(Math.random() * 1000);
}

var _target = $('#target');
function add() {
    _target.empty();
    for (var i = 0; i < 100; i++) {
        _target.append('<tr><td>'+random()+'</td><td>'+random()+'</td><td>'+random()+'</td></tr>')
    }
}

var addInt = setInterval(add, 500);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Memory leak test: jquery</title>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<table id="target"></table>

</body>
</html>

innerHTML编写的相同代码不会导致内存泄漏。 Chrome 57.0.2987.133(64位)中包含此代码的标签已从37 Mb增加到161 Mb。 如果我们在代码中使用任何这些方法,则存在问题:

  • 的.html();

  • .append();

  • .appendTo();

  • .prependTo();

  • .prepend();

我不确定.remove()和.empty(); 我找不到这个问题的解决方案。 我发现的所有帖子都太旧了。 这是我测试的结果: enter image description here

1 个答案:

答案 0 :(得分:1)

我在Chrome 57中有这个内存泄漏,但在58中一切都很好!

  • OS:Linux mint 17 x64
  • Chrome:58.0.3029.81(64位)

mem leak test