4
我发现在我的代码中的内存泄漏看起来像下一个片段的jQuery 3.1.1内存泄漏和空
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(); 我找不到这个问题的解决方案。 我发现的所有帖子都太旧了。 这是我测试的结果:
你到底想达到什么目的? –
有趣。它不会导致在Opera 44.0.2510.1449(PGO)或Firefox 53.0(32位)上泄漏,但在Chrome上自己确认泄漏57.0.2987.133 – webbm
@ryad我的目标是重新渲染所有表,当我得到一个新的消息与websocket的新数据。 – Ahcael