Должен ли я использовать событие unload? - PullRequest
3 голосов
/ 28 июля 2011

Я делаю лайтбокс, мне нужно использовать

$(window.top).unload(function() { .. });

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

Нужно ли беспокоиться или браузер сделает это за меня? Что со всеми утечками памяти и все ..

Редактировать: я прикрепил много данных к элементам div. Так что мне нужно сделать removeData при выгрузке?

Ответы [ 3 ]

5 голосов
/ 28 июля 2011

(Да, браузер делает это за вас | Нет, вы не должны выполнять никакой очистки), Javascript - сборщик мусора.

1 голос
/ 29 июля 2011

Существует несколько различных способов создания утечек памяти в javascript. Большинство из них связано с созданием циклических ссылок между объектами javascript и DOM. см:

http://www.ibm.com/developerworks/web/library/wa-memleak/

но в противном случае нет, вам не нужно явно удалять ссылки на вещи - сборщик мусора javascript сделает это за вас.

Фрагмент кода, который вы разместили, имеет побочный эффект, о котором вы должны знать. Если вы прикрепите что-либо к обработчику onunload для документа, то браузеры, которые поддерживают кэширование состояния механизма DOM / javascript для быстрого поиска при переходе назад / вперед, больше не смогут сохранять страницу в bfcache (см. http://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/). Это может повлиять на производительность.

1 голос
/ 28 июля 2011

Взгляните на это, это может помочь вам понять утечку памяти при использовании jquery и плагинов на основе jquery.

Утечка памяти jQuery с удалением DOM

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