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