![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Ребята у меня следуюшая проблема:
Мы используем в своём проекте GWT а именно SmartGWT. Столкнулись с проблемой что браузер, в нашем случае FF, не освобождает память. Первое что приходит на ум, это то что некие компоненты, объекты не уничтожаются и продолжают висеть в памяти. Вот и вопрос существует ли какие-нибудь программы, профайлеры (JavaScript скорей всего), которые могут мне почь понять, какие объекты, компоненты в браузере висят и "жрут" много памяти? Зарание спасибо -------------------- www.unkis.com |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Ну если точно известно, что браузер не освобождает память, то лучше в JS разделе спросить. А как работает в других браузерах? И в чем проявляется утечка, сообщение об ошибке имеется?
|
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
сообщение об ошибки нет, но видно как память браузера растёт после манипулязии с "GWT компонентами". -------------------- www.unkis.com |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Тогда лучше в JS разделе спросить, перенесу тему.
|
|||
|
||||
| magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 2 Всего: 16 |
Вчера думал, не решился ответить.
Проблема в том, что за утечкой памяти обычно никто не следит и использование сторонних библиотек только усложняет задачу. В javascript есть только один способ управлять памятью - удаление элемента масива с помощью функции delete. Как ведет себя браузер с памятью - можно лишь догадываться. Исходя из того, что у нас есть, рекомендую пересмотреть сам подход: надо завести некий класс, который будет заводить и раздавать все переменные порожденные во время работы страницы. на класс возложить функцию "гарбидж коллектора", т.е. он будет удалять переменные, которые не использовались на протяжении, например 100 запросов к этому классу или по времени (что хуже для веба). Можно подумать о приоритезации, т.е. сделать переменные бесконечные и с определенном сроком жизни. Задачка, прямо скажу, непростая, но реализуемая. |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Для IE6 были простые и в меру надежные способы диагностики утечек памяти. Выглядело это как программка , которая открывала нужный сайт и давала возможность при закрытии странички просмотреть наличие неосвобожденных переменных JS.
Неосвобождение переменных было связано с тем, что при функционировании странички в данных скрипта конструировались циклические ссылки на DOM объекты. Классический минимальный пример
Такой рекурсивный цикл вызывал клинч у системы освобождения памяти, оба дом объекта оставались в памяти при перезагрузке страницы. Более загадочные для детектирования рекурсивные списки получались при задании обработчиков событий
Такая простота в получении довольно неприятного бага вызвала в кругах JS программистов панические настроения и даже отказ от использования анонимных функций в скриптах ;) Только появление версии IE с законопаченным багом несколько сгладило ситуацию. Стандартное решение, которое помогало в большинстве случаев - по выходу из странички удалить все установленные скриптом обработчики событий, и почистить ссылки на элементы. Для jQuery даже была введена конструкция .data, которая позволяет привязывать к DOM - объекту любые данные. не беспокоясь особенно об утечках памяти. С другой стороны, багливость IE поддавалась детектированию и исправлению, а вот баги с памятью FF пока детектированию широкими массами трудящихся не поддаются. Опять-же imho, большинство(если не все) баги с памятью в FF связаны с криво написанными плагинами FF. Можно отключить все плагины и посмотреть, что получится. Это сообщение отредактировал(а) ksnk - 2.9.2010, 16:06 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |