![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Иль |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Маленький отчет по теории с так называемыми Closures и их проблемами по утечки памяти в ИЕ. Closures - мощью JS, позволяющая сохранять контент отработавшего метода/функции, для использования в другом (именно отработавшего до конца метода, тк в браузерах одна JS машина и пока не отработает вызывающая функция, не пойдет вторая (ИМХО), см пример 2).
Проблема в том, что если в циклическую ссылку попадет DOM или ActiveX объект, то в IE сборщик мусора не сможет уничтожить попавшие в кольцо ссылок объекты. Память под них останется занятой до перезагрузки IE
Важно понимать, что во всех трех случаях мы полностью сохранили в памяти весь контент вызывающей функции для вложенной и если даже мы не передали явно в анонимную вложенную функцию какую-либо переменную вызывающей функции, то она всеравно остается нам доступной!!! Также проблему можно полностью порешить применяя альтернативную форму описания метода обработчика события, но тогда ни какой контент не передасться.
Наши иностранные друзья колбасятся не подетски и даже применяют сборщик информации по заданным обработчикам событий, чтобы по window.unload запустить в итерации (пордон, в цикле) их обнуление, типа ggg.onerror=null Теперь другой вариант с простой циклической ссылкий с участием объекта DOM, что делает такую связку также недоступной для сборщика мусора, в отличии от циклической ссылки просто JS объектов.
Лишним Вы спросите, это все? Нет, не все, надо бы еще кой чего написать, но сил моих пока больше нет Это сообщение отредактировал(а) Иль - 2.7.2005, 19:32 -------------------- Ты виндусятник?... А я да. |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Можно в двух словах, что да как. Все таки ты был прав и беспокоиться не нужно? |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Вообще беспокоится нужно. Выборка из иследований одного человека это мало. Конечно хорошо если MS все предусмотрел, но про это никто не говорит. Если ИЕ проглючит на MAC, то и бог с ним, но ведь non-stop вещи обычно пишутся на корпоротивного пользователя и под Windows, представляеш если там проглючит? Я б задал вопрос на заграничном форуме, но боюсь там долго будут смеяться над моим английским
Я пока в пост выше теории добавлю -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Closures по русски называют замыканиями. Известны они также в PERL
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Проблема жуткая, JS силён своими closures (хотя круче наверное только Ruby), но ИЕ как это часто бывает всё в *овно переведёт... Читаем вторую ссылку с первого поста Иль, там решение проблемы. Вещь актуальная для тех кто генерит много инфы с помощью JS на клиенте, у нас так меню тормозило... жаль когда подрубают прямо под ноги...
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |