Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > JavaScript: Общие вопросы > Утечка памяти от SAJAX |
Автор: cir 29.2.2008, 09:38 |
Здравствуйте. У меня есть такая задача: На странице отображать 12 параметров(параметры хранятся в БД на сервере). Обновлять эти параметры нужно с периодичностью 1 раз в секунду. Для реализации такой страницы я использую библиотеку SAJAX. На первый взгляд все работает. Но! Смотрю в диспетчер задач на вкладку процессы и вижу: процесс моего браузера (IE) постоянно ест память, примерно по 300 kb в секунду. Пробовал другие браузеры : Opera, FireFox - результат тот же самый. Естественно, с такой утечкой памяти браузер долго работать не может. А мне нужно, чтобы браузер работал с подобной страницей полный рабочий день - т.е 8 часов подряд. Мои вопросы: 1) Правильно ли я выбрал средства реализации для моей задачи, я имею в виду библиотеку SAJAX ? 2) Каким образом можно обновлять данные на странице без утечки памяти? Заранее спасибо. |
Автор: solenko 29.2.2008, 09:42 |
cir, вы, помоему, уже создавали подобную тему... Приведите js исходник того, что работает в браузере -- тогда можно будет что-то говорить. |
Автор: cir 29.2.2008, 09:48 | ||||||
Привожу код страницы, с которой работает браузер:
|
Автор: solenko 29.2.2008, 09:55 | ||||||
В IE будет течь в любом слуячае. Как я уже писал, есть известный баг с утечкой в памяти при навешивании как обработчика на ActiveX анонимной функции. Если хотите почитать подробнее -- могу дать ссылку на инглише. Добавлено через 2 минуты и 40 секунд Хотя тут он и в других браузерах не удаляется:
т.е. мы сохраняем каждый раз ссылку на объект, а вот удаления его по окончанию обработки я не нашел. Добавлено через 8 минут и 18 секунд
Правильно/не правильно -- бог его знает. Но я не сторонник использования таких фреймверков. Когда отдельно пишется JS и PHP, то получается более контролируемо. Лично я использую JQuery. Как там поставлен вопрос с утечкой -- не скажу, но с проблеммами не сталкивался.
1. Не сохранять ссылку на объект XMLHTTPRequest или удалять ее после окончания обработки 2. Не использовать анонимные функции как обработчики. |