![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Вот здесь вводная:
1. http://htmlcoder.visions.ru/JavaScript/?29 - русское мнение 2. http://www.bazon.net/mishoo/articles.epl?art_id=824 - англитский первоисточник Прочтите, сначала, хоть по русски. САБЖ здесь не выкладываю. Прочли? Ну тогда вот: Итак, похоже кто-то прокололся Причем, тут дело не только в событиях. Отрубил кривые и навешиваемые походу события напроч и получил по 5-10кБ сжирания памяти на одну простую прогонку события со сменой src по onclick. Правда у меня анонимных вложенных функций полно (еще перепроверю все). Путешествие по страницам сайта приводит к этим же "замечательным" результатам с 0,2-0,8мБ прибавки на страницу. Сразу представляю Васю Пупкина с его Win95 и 64мБ оперативки. Может на 95 все не так печально, но на XP при старте ИЕ со страницей уже 20-30 мигов съедается. Опять же сброс памяти происходит только при перезапуске ИЕ. Такая же фигня идет, как в Dreamweaver, только там, конечно, все гораздо безобразней Самодельный сборщик мусора по window.onunload я еще не делал, а вот задание событий через new Function(...) не помогло. Если кто сможет, прокоментируйте английскую статью. Если что нароете или заметите - скиньте. Я пока тоже только вникаю. Это сообщение отредактировал(а) Иль - 30.6.2005, 20:56 -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Опаньки, вот она и выплыла
Вот тут говорится про это 1.http://blogs.gotdotnet.ru/personal/mihaili...gory=Philosophy - русский 2.http://msdn.microsoft.com/library/default....ak_patterns.asp - английский источник Но если основная причина именно в этом, то впринципе это легко в перечислении порешать. Сначала поудаляв детей контейнера, а потом и сам контейнер. Елки, неужели так просто (глюки ссылочного сборщика мусора и тд и тп) Надежды, надежды... Как раз при обновлении страницы такие зацикленные ссылками контейнеры и не удаляются! Класс, попробую. А вот что до описания событий анонимными вложенными функциями - не прорабатывал, но маленький тесть ничего не показал. Такс, изучаем дальше (ща, все спать лягут Это сообщение отредактировал(а) Иль - 30.6.2005, 23:32 -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Я это воспринимаю так: если у кучки людей руки растут не из того места, откуда должны, то это не моя проблема. Я буду по прежнему использовать вложенные функции и по барабану на утечки в пару кб. Может быть я идеалист, но пока мало кто заставлял меня акцептировать лажу других
На счёт вложенных ссылок - это редко когда требуеться, но это ещё один камень в сторону ИЕ. Обычно сборщик мусора не только считает ссылки, но и переносит и упаковывает памайть. Если значение потеряло имя, то на него не будут ссылаться из таблицы имён, следовательно любые ссылки сами на себя никак не помешают. Иль, совет: развивайся и иди дальше -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Конечно! Твое решение вообще золото и без него никак. Просто не желаю делать по другому, тк оно мне нравится, а другие нет. Но только у 95% моей аудитории при серфинге по сайту на каждой новой странице будет съедаться по мегабайту (уже 1,2мБ отловил на жирной странице). А потом, погодите, я еще не выяснил, может с вложенными сылками все путем будет. Да даже если что-то и есть, ничего страшного: входим в событие - создаем ссылку, выходим - убиваем (Внимание!!! Вроде как не с помощью delete, а присвоением простого значения, см. ниже). Делов то куча. Да еще есть туева куча решений. Главное быть на чеку и с вилами Я тут Drip `ом (валдатор утечек для IE) проверил, вообще глюк не из той оперы нашел. Волосы дыбом. ИМХО оказывается, если прописывать в функции события элементам и для краткости создать локальную переменную в которой хранить ссылку на целевой объект, то можно словить глюк утечки памяти, если перед завершением функции не присвоить этой переменной любое простое значение вместо ссылки на объект (любая строка, любое число) и никакой delete тут не поможет. Ну не съедается, почему-то, обрабатываемый объект помоишником.
Да ну и бог с ним. По мне лучше пусть жрет память, чем тупит как Gecko со своей дибильной технологией отображения (простите, это недопроверенная реальность ИМХО). Конечно, с опытом положительные оценки смещаются в сторону Mozilla с Firefox и тд.
Направь, а? Если силы после работы остались Это сообщение отредактировал(а) Иль - 1.7.2005, 02:24 -------------------- Ты виндусятник?... А я да. |
||||||
|
|||||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Иль хорсошую тему ты поднял, скидывай всё что найдёшь
На досуге сядь за Java Короче очень многое в этом мире есть, что интересно. Если тебе интеренсо править баги ИЕ, то продолжай, в любом случае полезно -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
А PHP5 не пойдет - я ее знаю. Именно четвертку надо?
Вау, страшно
Ненавижу, а куда деваться. Безвыходность. Не бросить же все. Время жаль... -------------------- Ты виндусятник?... А я да. |
||||||
|
|||||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Беда с этим IE. Убрал я ссылку на ссылку, стало сразу поскромнее и Drip больше ничего не фиксит. Темпы прироста значительно уменьшелись.
Только вот проблема: вызов даже пустой страницы отжирает памяти в 20-30кБ. А если непрерывно дубасить по обновлению, то размер занимаемой памяти стабильно растет. Чего не наблюдается в Gecko. Я конечно еще по причешу свой код, но IE отстойничает чего-то. Это сообщение отредактировал(а) Иль - 1.7.2005, 04:05 -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| diam |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 348 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: 6 Всего: 16 |
Хотел тебе "+1" поставить, но пока пишут, что молодой |
|||
|
||||
| Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Пустая страница была "about: blank"? Значит ИЕ не только из-за JS память хавает, но сам по себе разрабсываеться ею. Это крайне странно, я видел приложения на ИЕ, работающие весь день. Судя по твоим репортам ИЕ бы завалил машину... Может у него просто работа с памятью как в Java, растёт пока есть куда, затем разом всё очищает и перестраивает.
Тут синтаксис не важен, смотри в исходники если C читать можешь. В пятой уже нормально обьекты создаються. diam просто были эмоции -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
| Иль |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
diam, не вопрос, сейчас за тебя оформлю. Я всеравно все нереализованные плюсы Sardar'у храню в избранном - не пропадут, реализую со временем
Да. И "about: blank", и страница без элементов и JS. Капельку, но поджирает всеравно. Может это вина плагинов.
Сейчас запустил в Drip такую проверку для "about: blank". Расскажу, что через час будет. Пока память растет. А потом запущу его на самую свою жирную страницу. Знаете, может и в правду зря шум поднял. Вычитал, что в ИЕ всего две основных возможности получить утечку памяти - и оба, когда в циклическую ссылку попадают объекты DOM или ActivX (видимо у сборщика мусора JS не хватает приоритета на их удаление). Я в форуме на английском вычитал, что там у кого-то на локалке в предприятии приложение стоит в паре с ИЕ и обновления страницы идут 15 раз в секунду. У них регулярно система мрет, но вроде после того, как они поставили JS меню. Может если убрать эти ссылки и в правду, как ты сказал, память будет самоочищаться. Пока писал за 10 минут "about: blank" набрал на обновлениях 400кБ. -------------------- Ты виндусятник?... А я да. |
||||||
|
|||||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Ребят, а Microsoft всех обманул (и правильно сделал
Сижу, жду как манны небесной аппокалипсиса моего компа. Из 512кБ имеющегося ОЗУ используется 550 Ан нет. IE взял, да и сбросил 167,6мБ на 54,4мБ и дальше пошол колбаситься Я сижу, запускаю загрузку ЦП под 100% разными заморочками и все по барабану. Утечки, не утечки - все также шустро работает. Запустил парралельно еще 2 таких же теста. Сейчас tasck manedger говорит, что выделено 800мБ памяти. Запускаю разные приложения - все шустро рулит??? Добавлено @ 19:43 И стоило кому-то там за бугром кипятком ... . Не понимаю ничего, где обещанный reload??? Это сообщение отредактировал(а) Иль - 1.7.2005, 19:46 -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Значит Сардар был прав?
|
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Aliance, да, получается прав.
Сейчас убрал фаил подкачки и не смог угробить систему. Память под ИЕ застыла на одном месте и не расла. В Drip догнал до 18мБ для каждого из 2 окон, и в ручную параллельно запустил ИЕ и получил 45мБ (видимо подглючивало от кликов вручную, тк не было задержки на запуск скрипта). Когда память под завязку была, выпустил Photoshoh с огромной картиной и система глюканула. Потом поступил по другому - загрузить память до предела и выпустил ИЕ и опять два окна Drip с ИЕ, долго ждал и ничего не произошло. Потом автоматические обновления страниц в Drip стали выдавать ошибку JS (процессор замедлился), но ручные обновления, в отдельно открытом ИЕ работали без сбоев!!! Правда если дубасить по кнопке обновлений, то тоже ошибки JS стали выходить, но если тыкать раз в секунду, то все путем. У меня даже менеджер задач глюканул и стал выдавать нули на загрузку ЦП и памяти, а ИЕ и другие приложения работали на глаз без задержек. Стал понемногу освобождать систему и он восстановился. Вывод: будете запускать скрипты до onload страницы, делайте это с задержкой, расчитанной на чокнутого юзверя, который колбасится от непрерывных кликаний по кнопке Refresh браузера -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Иль держи плюс, хорошая тема, взбуродажил народ и успокоил, всё таки non-stop приложения под ИЕ писать будем
Кстати с выходом лонгорна будет XAML, этакое подобие XUL мозиллы, будем кнопки не как в формах сейчас делать, а нормальные окошки, да так что от обычной проги не отличишь. Тогда ИЕ станет полноценой платформой для создания клиентов и не надо будет на дельфях/VC++ и подобных извращаться. Под мозиллой можно писать уже сейчас Отсюда вопрос: а как станет тогда с памятью? -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Перепроверить бы мои выводы (взгляд со стороны нужен). Может как-нибудь сам еще наделаю грязных циклических ссылок и запущу повторно тест. Я порыллся в инете - и у нас и у них тишина, токма пишут, что ИЕ это плохо. Меня вроде как первого осинило комп на измор проверить с твоей подачи, Sardar. Да только нам всем оно не так критично, как для non-stop developers. Надо еще тестить.
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |