Я работаю над большим корпоративным приложением с большим количеством JavaScript. Достаточно того, что я не могу пройти и исправить все небольшие круговые ссылки, которые были созданы за последние 5 лет развития. Во время исследования решений я столкнулся с этим небольшим хакером/патчем jQuery:
http://kossovsky.net/index.php/2009/07/ie-memory-leak-jquery-garbage-collector/
и решил попробовать. Удивительно, это работает! sIEVE не показывает утечек в местах, которые я ранее идентифицировал, а задача iexplore поддерживает более управляемый объем памяти.
Мой вопрос: зачем это работает? jQuery.remove вызывает .removeChild, который должен избавиться от элемента, но, по-видимому, этого не делает. Патч вместо этого добавляет целевой элемент в новый div коллектора мусора, который затем очищается. Почему метод удаления патча полностью освобождает память, но функция удаления jQuery не работает? Я надеюсь понять, почему это работает, чтобы, возможно, улучшить решение, прежде чем я проверю его на большее приложение.