Возможные проблемы памяти jQuery с $ ('#foo') .remove ()?

Вы можете использовать эту простую функцию

function getRandomColor(){
 var color =  "#" + (Math.random() * 0xFFFFFF << 0).toString(16);
 return color;
}
7
задан andyuk 27 June 2009 в 13:47
поделиться

3 ответа

Я думаю, что он будет (в конечном итоге) собран мусором, как только он выйдет за рамки. Если у вас возникли проблемы с чрезмерным использованием памяти, вы можете попробовать использовать оператор удаления для возвращаемого объекта.

7
ответ дан 7 December 2019 в 01:25
поделиться

Проблема утечки памяти, похоже, уже была доведена до команды jQuery http://groups.google.com/group/jquery-dev/browse_thread/thread/4a99f6e9b2e33057 / 45ce657a48afd43a

1
ответ дан 7 December 2019 в 01:25
поделиться

Я попытался найти ответ на свой вопрос, выполнив небольшой тест.

<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>

Я изменил функцию remove (), используя:

var test = $('#test_'+($i-1)).remove();

и оператор удаления (благодаря предложению tvanfosson):

var test = $('#test_'+($i-1)).remove();
delete test

После выполнения этих тестов я бы все равно просто использовал remove (). Очень сложно сказать, была ли утечка памяти, поскольку использование памяти браузером всегда увеличивалось после перезагрузки страницы. Возможно, кто-то другой сможет дать более убедительный ответ, протестировав код иначе.

2
ответ дан 7 December 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: