Удаление DOM-узлов в JavaScript для экономии памяти - PullRequest
4 голосов
/ 22 февраля 2011

Я использую браузер Safari для просмотра моей веб-страницы, богатой Javascript. Я вижу, что Safari занимает много памяти (500-900 МБ) при просмотре веб-страницы и выполнении различных операций. Я хотел бы знать, нужно ли удалять созданные объекты DOM, скажем, var elem = document.getElementById('Id1'); для оптимизации использования памяти? Если есть другие указатели, пожалуйста, предложите. Кроме того, как мы можем удалить этот объект DOM самым простым способом?

Спасибо Сиддхарт

Ответы [ 3 ]

1 голос
/ 22 февраля 2011

Одно уточнение. Ваш пример кода не создает узел DOM; он просто извлекает ссылку на существующий узел :

var elem = document.getElementById('Id1');

Получив доступ к элементу, вы можете удалить его следующим образом:

elem.parentNode.removeChild(elem);
1 голос
/ 22 февраля 2011

Удаление узлов DOM может быть бесполезным , если вы создаете утечки памяти (они не могут быть удалены из памяти).

Это может произойти, если вы подключите узлы DOM и объекты JavaScript в своем коде (циклические ссылки, которые не будут очищены сборщиками мусора DOM и JS).

Если вы хотите избавиться от этой проблемы:

  • используйте инструменты, упомянутые в этом ответе 1011 *
  • прочитайте немного о утечки памяти DOM / JS , если вы хотите избежать утечек в будущем и распознать этот анти-паттерн.
0 голосов
/ 22 февраля 2011

Инспектор webkit имеет утилиту профилирования для такого рода вещей. Я не уверен, существует ли он в версии Safari, но определенно в версии Chrome.

См. этот вопрос / ответ .

Здесь - хорошее руководство по использованию утилиты Safari Inspector.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...