Показать сообщение отдельно
  #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.
Ответить с цитированием