Освобождение памяти, используемой неприкрепленными узлами DOM в Javascript - PullRequest
5 голосов
/ 08 февраля 2009

Как часть моего приложения, я собираю набор небольших узлов Dom, которые не отображаются сразу. Я храню их во внутреннем массиве. Пользователь может вызвать их отображение, и в этом случае я перезаписываю их в div, который используется для их отображения. Это все хорошо. Но когда пришло время заменить их на новые, я хочу уничтожить старые (эффективно освободить их). В противном случае со временем использование памяти может возрасти в геометрической прогрессии. Как заставить браузерный движок js сделать это? Достаточно ли просто установить каждый элемент в моем массиве узлов Dom на ноль? Есть ли что-то еще, что я должен сделать? А может, мне вообще об этом не нужно беспокоиться?

Ответы [ 2 ]

5 голосов
/ 08 февраля 2009

Да, установка элементов в null должна быть в порядке ... За исключением того, что некоторые детали реализации должны быть учтены в Internet Explorer: его обработка циклических ссылок хитрая. Смотри http://msdn.microsoft.com/en-us/library/bb250448.aspx

Циркулярные ссылки - при подсчете взаимных ссылок между COM-инфраструктурой Internet Explorer и любым механизмом сценариев объекты могут просочиться в память

Таким образом, у вас есть для прерывания циклических ссылок в некоторых случаях.

5 голосов
/ 08 февраля 2009

Если вы установите для каждого элемента значение NULL, они будут автоматически собираться мусором.

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