Я искал ответ или даже ссылку на этот конкретный вопрос, но безрезультатно.Я использую JQuery UI 1.8.7 и JQuery 1.5.1.У меня есть диалог, который я хочу не только уничтожить при закрытии, но и удалить из DOM при закрытии.Это отлично работает в Firefox.Однако, когда я делаю то же самое в IE7, я вижу всплеск использования памяти браузером на 6 МБ, и эта память никогда не восстанавливается, пока я полностью не выключу браузер.Итак, моя первая мысль была, что-то в моем диалоге вызывает утечки памяти.Я удалил все, что добавлял, и сделал простой диалог, используя следующий код:
$('<div id="testMe">hello</div>').dialog({
modal: true,
autoOpen: true,
close: function() { $(this).dialog('destroy'); }
});
Когда я открою это диалоговое окно, закройте его и обновите браузер.Я всегда получаю на 6 МБ больше памяти, чем раньше.Если я открою это диалоговое окно, но затем обновлю браузер, прежде чем закрыть его, то я вообще не увижу скачок памяти.Я понятия не имею, что может быть причиной этого - я нашел несколько сообщений об общих утечках памяти в пользовательском интерфейсе JQuery, но ни одно из исправлений не помогло исправить ситуацию.
Я также подумал, что, возможно, мешает какой-то другой код в моем проекте.Это не тот случай - если я делаю то же самое, используя этот пример jsFiddle, я также получаю всплеск памяти!(http://jsfiddle.net/n68Af/1/). На данный момент я понятия не имею, куда еще обратиться или что еще делать. Мне нужно уничтожить эти диалоги и удалить их из DOM - уже есть довольно много экземпляров диалогов по всему нашему(очень большое) приложение, опирающееся на тот факт, что диалоговое окно Div больше не находится в DOM после закрытия.
Редактирование: изменение значения модального флага не оказывает влияния. Кроме того, я понимаю, что мой пример делаетне удалить элемент из DOM. Независимо от того, делаю я это или нет, утечка памяти остается. Код в моем реальном проекте просто удаляет элемент из dom с помощью $ (this) .remove (). Я упростил пример, потому чтореальная проблема заключается в вызове «destroy», оставляющем некую циклическую ссылку или что-то, что вызывает всплеск памяти в 6 МБ, о котором я упоминал.
Редактировать: После изучения этого вопроса, кажется, не имеет значения, что такое JQueryИспользуемый виджет пользовательского интерфейса (я пробовал Dialog, мой собственный виджет и кнопку). Пока я удаляю элемент, который виджет повторноНачиная с DOM, я вижу огромную утечку памяти в IE7.Утечка памяти также происходит, если я перемещаю элементы куда-то еще в DOM.Я попытался создать DIV «мусорное ведро», в которое я переместил все содержимое моего диалога, вместо того, чтобы полностью удалить его, и тот же всплеск произошел.
Любая помощь или направление будут высоко оценены.Заранее спасибо, ребята!