私はちょっとしたテストをして自分の質問に対する答えを見つけようとしました。 delete operator(tvanfossonの提案のおかげで)
var test = $('#test_'+($i-1)).remove();
をしてと::
<script type="text/javascript">
$(document).ready(function() {
for ($i=1; $i<10000; $i++) {
$('table').append("<tr id=\"test_" + $i + "\"><td>test " + $i + "</td></tr>");
$('#test_'+($i-1)).remove();
}
});
</script>
<table>
<tr><td id="test_0">test 0</td></tr>
</table>
は、私が使用して削除()のバリエーションをした
var test = $('#test_'+($i-1)).remove();
delete test
は、これらのテストをやった私はまだだろう単にremove()を使用してください。そのページをリロードした後にブラウザのメモリ使用量が常に増加したため、メモリリークがあったかどうかを知ることは非常に難しいです。他の誰かが、コードを別の方法でテストすることによって、より決定的な答えを提供する可能性があります。
はい。 DOMは変更されていますが、jQueryオブジェクトは変更されていません。変数にjQueryオブジェクトを割り当てた場合、ガベージコレクタはスコープから外れたときにその変数にショットする必要があります。 – Nosredna