Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ИЕ неподетски жрет память, Беда! А у Gecko все впорядке. 
:(
    Опции темы
Иль
Дата 30.6.2005, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Вот здесь вводная:
1. http://htmlcoder.visions.ru/JavaScript/?29 - русское мнение smile
2. http://www.bazon.net/mishoo/articles.epl?art_id=824 - англитский первоисточник
Прочтите, сначала, хоть по русски. САБЖ здесь не выкладываю.


Прочли? Ну тогда вот:
Итак, похоже кто-то прокололся smile и из-за этого "кто-то" у меня при обновлении страницы захваченная под ИЕ память увеличивается каждый раз на 0,2-0,8мБ в зависимости от страницы. Сборщик мусора некчерту!!! А у Gecko на тех же скриптах все путем (правда он сразу 30-40 мигов лопает и успокаивается smile ).

Причем, тут дело не только в событиях. Отрубил кривые и навешиваемые походу события напроч и получил по 5-10кБ сжирания памяти на одну простую прогонку события со сменой src по onclick. Правда у меня анонимных вложенных функций полно (еще перепроверю все). Путешествие по страницам сайта приводит к этим же "замечательным" результатам с 0,2-0,8мБ прибавки на страницу. Сразу представляю Васю Пупкина с его Win95 и 64мБ оперативки. Может на 95 все не так печально, но на XP при старте ИЕ со страницей уже 20-30 мигов съедается.
Опять же сброс памяти происходит только при перезапуске ИЕ. Такая же фигня идет, как в Dreamweaver, только там, конечно, все гораздо безобразней smile (не помню точно).

Самодельный сборщик мусора по window.onunload я еще не делал, а вот задание событий через new Function(...) не помогло.

Если кто сможет, прокоментируйте английскую статью. Если что нароете или заметите - скиньте.
Я пока тоже только вникаю.

Это сообщение отредактировал(а) Иль - 30.6.2005, 20:56


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 30.6.2005, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Опаньки, вот она и выплыла smile. Sardar, помниш у тебя в коде по смене изображений была ссылка на ссылку? Хорошая фишка. А ведь у меня что-то тогда екнуло - знал же! Боже, ну почему у меня в JS об этом должна голова болеть!!! Все творчество встало smile. Хотя мож так и интересней smile
Вот тут говорится про это
1.http://blogs.gotdotnet.ru/personal/mihaili...gory=Philosophy - русский
2.http://msdn.microsoft.com/library/default....ak_patterns.asp - английский источник

Но если основная причина именно в этом, то впринципе это легко в перечислении порешать. Сначала поудаляв детей контейнера, а потом и сам контейнер. Елки, неужели так просто (глюки ссылочного сборщика мусора и тд и тп)
Надежды, надежды...
Как раз при обновлении страницы такие зацикленные ссылками контейнеры и не удаляются! Класс, попробую. А вот что до описания событий анонимными вложенными функциями - не прорабатывал, но маленький тесть ничего не показал.
Такс, изучаем дальше (ща, все спать лягут smile )


Это сообщение отредактировал(а) Иль - 30.6.2005, 23:32


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 1.7.2005, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Я это воспринимаю так: если у кучки людей руки растут не из того места, откуда должны, то это не моя проблема. Я буду по прежнему использовать вложенные функции и по барабану на утечки в пару кб. Может быть я идеалист, но пока мало кто заставлял меня акцептировать лажу других smile

На счёт вложенных ссылок - это редко когда требуеться, но это ещё один камень в сторону ИЕ. Обычно сборщик мусора не только считает ссылки, но и переносит и упаковывает памайть. Если значение потеряло имя, то на него не будут ссылаться из таблицы имён, следовательно любые ссылки сами на себя никак не помешают.

Иль, совет: развивайся и иди дальше smile В мире помимо ИЕ есть куча других браузеров, к тому же есть куча других технологий и языков. Не позволяй каким то левым людям зас##ть тебе мозги.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 1.7.2005, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(Sardar @ 1.7.2005, 01:23)
то это не моя проблема

Конечно! Твое решение вообще золото и без него никак. Просто не желаю делать по другому, тк оно мне нравится, а другие нет. Но только у 95% моей аудитории при серфинге по сайту на каждой новой странице будет съедаться по мегабайту (уже 1,2мБ отловил на жирной странице).
А потом, погодите, я еще не выяснил, может с вложенными сылками все путем будет. Да даже если что-то и есть, ничего страшного: входим в событие - создаем ссылку, выходим - убиваем (Внимание!!! Вроде как не с помощью delete, а присвоением простого значения, см. ниже). Делов то куча. Да еще есть туева куча решений. Главное быть на чеку и с вилами smile.
Я тут Drip `ом (валдатор утечек для IE) проверил, вообще глюк не из той оперы нашел. Волосы дыбом. ИМХО оказывается, если прописывать в функции события элементам и для краткости создать локальную переменную в которой хранить ссылку на целевой объект, то можно словить глюк утечки памяти, если перед завершением функции не присвоить этой переменной любое простое значение вместо ссылки на объект (любая строка, любое число) и никакой delete тут не поможет. Ну не съедается, почему-то, обрабатываемый объект помоишником.


Цитата(Sardar @ 1.7.2005, 01:23)
это ещё один камень в сторону ИЕ

Да ну и бог с ним. По мне лучше пусть жрет память, чем тупит как Gecko со своей дибильной технологией отображения (простите, это недопроверенная реальность ИМХО). Конечно, с опытом положительные оценки смещаются в сторону Mozilla с Firefox и тд.


Цитата(Sardar @ 1.7.2005, 01:23)
развивайся и иди дальше

Направь, а? Если силы после работы остались smile . Всеравно, пока не добъю, не возьмусь за ссылки в С++, но вектор-то нужен.

Это сообщение отредактировал(а) Иль - 1.7.2005, 02:24


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 1.7.2005, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Иль хорсошую тему ты поднял, скидывай всё что найдёшь smile Просто я в порыве чувств плюнул на ИЕ и забыл, что большинство интранет приложений опять же под ним писаться будут, а там бродилка может часами на одной странице открытой стоять.

Цитата
Направь, а?

На досуге сядь за Java smile Также глянь как работает с памятью PHP4, правда его черезвычайная оптимизация выходит боком, когда два одинаковых по содержимому, но разные логически обьекты вдруг становяться ссылкой на один общий обьект. Почитай как работает сборщик мусора в Java и как в C#. В последнем можно писать unsafe код, я сам пока не догонаю как сборщик мусора не схоидит с ума при виде блоков памяти используемых из unsafe блоков smile
Короче очень многое в этом мире есть, что интересно. Если тебе интеренсо править баги ИЕ, то продолжай, в любом случае полезно smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 1.7.2005, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(Sardar @ 1.7.2005, 02:36)
как работает с памятью PHP4

А PHP5 не пойдет - я ее знаю. Именно четвертку надо?
Цитата(Sardar @ 1.7.2005, 02:36)
unsafe код

Вау, страшно smile
Цитата(Sardar @ 1.7.2005, 02:36)
Если тебе интеренсо править баги ИЕ

Ненавижу, а куда деваться. Безвыходность. Не бросить же все. Время жаль...


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 1.7.2005, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Беда с этим IE. Убрал я ссылку на ссылку, стало сразу поскромнее и Drip больше ничего не фиксит. Темпы прироста значительно уменьшелись.
Только вот проблема: вызов даже пустой страницы отжирает памяти в 20-30кБ. А если непрерывно дубасить по обновлению, то размер занимаемой памяти стабильно растет. Чего не наблюдается в Gecko.
Я конечно еще по причешу свой код, но IE отстойничает чего-то.

Это сообщение отредактировал(а) Иль - 1.7.2005, 04:05


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
diam
Дата 1.7.2005, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 6
Всего: 16



Цитата(Sardar @ 1.7.2005, 01:23)
Я это воспринимаю так: если у кучки людей руки растут не из того места, откуда должны, то это не моя проблема. Я буду по прежнему использовать вложенные функции и по барабану на утечки в пару кб. Может быть я идеалист, но пока мало кто заставлял меня акцептировать лажу других smile

Хотел тебе "+1" поставить, но пока пишут, что молодой smile. Так что "+1" тебе так smile
PM MAIL   Вверх
Sardar
Дата 1.7.2005, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата
Только вот проблема: вызов даже пустой страницы отжирает памяти в 20-30кБ. А если непрерывно дубасить по обновлению, то размер занимаемой памяти стабильно растет.

Пустая страница была "about: blank"? Значит ИЕ не только из-за JS память хавает, но сам по себе разрабсываеться ею. Это крайне странно, я видел приложения на ИЕ, работающие весь день. Судя по твоим репортам ИЕ бы завалил машину... Может у него просто работа с памятью как в Java, растёт пока есть куда, затем разом всё очищает и перестраивает.

Цитата
А PHP5 не пойдет - я ее знаю. Именно четвертку надо?

Тут синтаксис не важен, смотри в исходники если C читать можешь. В пятой уже нормально обьекты создаються.

diam просто были эмоции smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 1.7.2005, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(diam @ 1.7.2005, 14:51)
Хотел тебе "+1" поставить, но пока пишут, что молодой . Так что "+1" тебе так

diam, не вопрос, сейчас за тебя оформлю. Я всеравно все нереализованные плюсы Sardar'у храню в избранном - не пропадут, реализую со временем smile

Цитата(Sardar @ 1.7.2005, 15:07)
Пустая страница была "about: blank"?

Да. И "about: blank", и страница без элементов и JS. Капельку, но поджирает всеравно. Может это вина плагинов.
Цитата(Sardar @ 1.7.2005, 15:07)
Может у него просто работа с памятью как в Java, растёт пока есть куда, затем разом всё очищает и перестраивает.

Сейчас запустил в Drip такую проверку для "about: blank". Расскажу, что через час будет. Пока память растет.
А потом запущу его на самую свою жирную страницу.
Знаете, может и в правду зря шум поднял. Вычитал, что в ИЕ всего две основных возможности получить утечку памяти - и оба, когда в циклическую ссылку попадают объекты DOM или ActivX (видимо у сборщика мусора JS не хватает приоритета на их удаление). Я в форуме на английском вычитал, что там у кого-то на локалке в предприятии приложение стоит в паре с ИЕ и обновления страницы идут 15 раз в секунду. У них регулярно система мрет, но вроде после того, как они поставили JS меню. Может если убрать эти ссылки и в правду, как ты сказал, память будет самоочищаться. Пока писал за 10 минут "about: blank" набрал на обновлениях 400кБ.


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 1.7.2005, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Ребят, а Microsoft всех обманул (и правильно сделал smile)
Сижу, жду как манны небесной аппокалипсиса моего компа. Из 512кБ имеющегося ОЗУ используется 550 smile smile. ИЕ показывает память в 167,6мБ. Все думаю, пришол пимпец. Сейчас уж точно reload будет.
Ан нет. IE взял, да и сбросил 167,6мБ на 54,4мБ и дальше пошол колбаситься smile в обновлениях страницы.
Я сижу, запускаю загрузку ЦП под 100% разными заморочками и все по барабану. Утечки, не утечки - все также шустро работает. Запустил парралельно еще 2 таких же теста. Сейчас tasck manedger говорит, что выделено 800мБ памяти. Запускаю разные приложения - все шустро рулит??? smile
Добавлено @ 19:43
И стоило кому-то там за бугром кипятком ... . Не понимаю ничего, где обещанный reload??? smile

Это сообщение отредактировал(а) Иль - 1.7.2005, 19:46


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Aliance
Дата 1.7.2005, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Значит Сардар был прав?
PM MAIL WWW ICQ Skype   Вверх
Иль
Дата 1.7.2005, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Aliance, да, получается прав.
Сейчас убрал фаил подкачки и не смог угробить систему. Память под ИЕ застыла на одном месте и не расла. В Drip догнал до 18мБ для каждого из 2 окон, и в ручную параллельно запустил ИЕ и получил 45мБ (видимо подглючивало от кликов вручную, тк не было задержки на запуск скрипта).
Когда память под завязку была, выпустил Photoshoh с огромной картиной и система глюканула. Потом поступил по другому - загрузить память до предела и выпустил ИЕ и опять два окна Drip с ИЕ, долго ждал и ничего не произошло. Потом автоматические обновления страниц в Drip стали выдавать ошибку JS (процессор замедлился), но ручные обновления, в отдельно открытом ИЕ работали без сбоев!!! Правда если дубасить по кнопке обновлений, то тоже ошибки JS стали выходить, но если тыкать раз в секунду, то все путем. У меня даже менеджер задач глюканул и стал выдавать нули на загрузку ЦП и памяти, а ИЕ и другие приложения работали на глаз без задержек. Стал понемногу освобождать систему и он восстановился.

Вывод: будете запускать скрипты до onload страницы, делайте это с задержкой, расчитанной на чокнутого юзверя, который колбасится от непрерывных кликаний по кнопке Refresh браузера smile


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 1.7.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Иль держи плюс, хорошая тема, взбуродажил народ и успокоил, всё таки non-stop приложения под ИЕ писать будем smile

Кстати с выходом лонгорна будет XAML, этакое подобие XUL мозиллы, будем кнопки не как в формах сейчас делать, а нормальные окошки, да так что от обычной проги не отличишь. Тогда ИЕ станет полноценой платформой для создания клиентов и не надо будет на дельфях/VC++ и подобных извращаться. Под мозиллой можно писать уже сейчас smile
Отсюда вопрос: а как станет тогда с памятью? smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 2.7.2005, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Перепроверить бы мои выводы (взгляд со стороны нужен). Может как-нибудь сам еще наделаю грязных циклических ссылок и запущу повторно тест. Я порыллся в инете - и у нас и у них тишина, токма пишут, что ИЕ это плохо. Меня вроде как первого осинило комп на измор проверить с твоей подачи, Sardar. Да только нам всем оно не так критично, как для non-stop developers. Надо еще тестить.


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.