Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.11.2008, 03:55
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Цитата:
И что этим кодом можно увидеть? Скачки в несколько килобайт используемой памяти, связаны с работой сборщика мусора. Не в одном браузере утечек памяти не наблюдается.
Именно в этом я и хотел убедится. У меня, пока тоже, аналогичный результат получился.

Цитата:
В памяти остаются все дочерние узлы, на которые где-либо хранятся ссылки
Это "особенность" наверное очень даже правильная! Раз я себе этот объект для чего-то "заначил" (читай: сохранил на него ссылку), значит мне он для чего-нибудь еще будет нужен. Следовательно удалять его можно только когда исчезнут все ссылки на него.

Другое дело, не произойдёт ли что-либо подобное, если на чилдрена есть не прямая ссылка, а подписка на событие. Мне сегодня уже лень это проверять - завтра попробую протестить.
Или если у кого-то будет еще желание этим заняться - бросьте сюда тестовый код.
Ответить с цитированием
  #12 (permalink)  
Старый 28.11.2008, 04:08
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

Небольшой оффтопик, с Вашего позволения...

Цитата:
использования кэша по идентификаторам
А как Вы решали проблему с тем, что структура документа в процессе работы скрипта может измениться (я имею в виду не только удаление узлов, но и добавление новых) и тот-же самый идентификатор должен вернуть уже абсолютно другие элементы.

Или Вы в этом случае запрещаете кэширование? Тогда, ИМХО, его надо будет запрещать в 90% случаев. А в оставшихся 10% эффективность кэша будет близка к нулю.

Это по крайней мере было-бы так с теми задачами, которые мне приходилось решать.
Ответить с цитированием
  #13 (permalink)  
Старый 28.11.2008, 04:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В документе не должно быть нескольких элементов с одним идентификатором. При смене идентификатора через специальную функцию, кэш очищается. Можно повесить обработчики, очищающие кэш, на специальные события, реагирующие на изменения структуры DOM, но я этого пока не делал, потому что в ИЕ нет этих событий. Повышение производительности при использование кэша существенно, поэтому стоит заморачиваться, темболее операции, требующие очистки кэша встречаются не так часто в большинстве скриптов.
Ответить с цитированием
  #14 (permalink)  
Старый 28.11.2008, 19:37
Кандидат Javascript-наук
Отправить личное сообщение для vk65535 Посмотреть профиль Найти все сообщения от vk65535
 
Регистрация: 21.11.2008
Сообщений: 114

Сообщение от Gvozd Посмотреть сообщение
ну, если вас так интересует этот вопрос, то составьте сркипт, с созданием больших объектов(чтоб утечка памяти на глаз была заметна), слушателячми и прочим, и последующим удалением
выложите его тут, пускай в разных протестят, и оформят здесь результаты.
а мне влом писать скрипт, я пошел спать.
всем спокойной ночи
Протестить можно, допустим, так:
Код:
for (var i = 0,
	efn = window.addEventListener ? 'addEventListener' : 'attachEvent',
	et = (window.addEventListener ? '' : 'on') + 'click',
	e; i < 100000; ++i
)
	(e = document.createElement('DIV'))[efn](et, function(e){ return function(){}; }(e), false);
Лиса вначале ест память, потом, если дать ей немного остыть - отдает.
Опера-9 довольно быстро и корректно отрабатывает сборку мусора, отъем памяти почти незаметен.
Осел, ест, но, как и ожидалось, не отдает. Если убрать циклическую ссылку из замыкания (выделена жирным), то, осел вообще не ест память (либо отдает слишком быстро). Если свернуть окно осла, память освобождается, но если потом опять развернуть и еще разок прогнать цикл - достает всю кучу мусора из свопа и продолжает ее наполнять )
Сафаря-3, память отдавать не торопится - или это похожий баг, или там уборщик мусора ленивый )

Последний раз редактировалось vk65535, 02.12.2008 в 11:56.
Ответить с цитированием
  #15 (permalink)  
Старый 04.12.2008, 23:58
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

vk65535, Большое спасибо, за тесты
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лучшая книга по JavaScript Systemnik Оффтопик 27 26.08.2012 16:54
Современная книга по JavaScript twolf Оффтопик 18 21.02.2009 01:20
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08
Нужен Старший разработчик JavaScript Yandex Работа 17 19.08.2008 16:43
Требуется программист на JavaScript Vadym Работа 0 17.07.2008 20:40