약간의 테스트를 통해 내 자신의 질문에 대한 답변을 찾으려고했습니다. 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