Я новичок в javascript и, похоже, у меня возникли проблемы с поиском утечки памяти. Я сузил его до раздела, который, кажется, вызывает утечку памяти, поскольку код довольно сложный. Я опубликую другой пример, который упрощает его, но вызывает ту же проблему (только намного меньше).
Пример кода
По сути, у меня есть некоторый код, который динамически создает HTML и присоединяет события к HTML. HTML перестраивается с каждым запросом AJAX. В первый раз все работает нормально, но после каждого AJAX-запроса память браузера увеличивается (не всегда одинаково)! Эту проблему можно воспроизвести, щелкнув несколько раз на jsfiddle и проследив за памятью браузера. Я предполагаю, что создаваемые замыкания никогда не собираются мусором, но я не уверен? Если это так, есть ли лучший способ сделать это без замыканий, которые не вызовут никаких проблем?
Это происходит в FF8, последней версии Chrome и IE 8. Скорее всего, во всех остальных - именно то, что я тестировал.
Я поместил в код некоторые комментарии, которые должны помочь.
Спасибо!
EDIT:
Итак, после некоторого исследования с использованием sIEve я вижу, что количество DOM-узлов удваивается при каждом вызове AJAX. Я обновил пример, чтобы смоделировать это. Итак, мой вопрос: почему не выполняется сборка элементов DOM после вызова jQuery пустым или удаления функций? Я также просматривал элементы в материале, открепляя обработчики событий и устанавливая ссылку js каждого элемента DOM на ноль без последствий ...
Пример кода