2012-07-03 5 views
5

Мой javascript довольно прост. Он просто продолжает вызывать ajax для загрузки данных и отображения их на моем экране. Я повторно использую этот элемент DOM, обновляя данные напрямую (используя функцию jquery $ (DIV) .empty(), а затем appendTo другой контент). Тем не менее, после работы на ночь мой компьютер зависает и, похоже, продолжает что-то делать.Система зависает после запуска javascript за ночь

Я стараюсь наблюдать за потреблением памяти некоторым аддоном firefox. При работе на два часа память может вырасти до 200 МБ, но я не уверен, вызвана ли это только моей js или другой причиной.

У меня есть некоторые вопросы по этому вопросу. 1. Есть ли какой-либо хороший способ контролировать его (например, сколько памяти используется на определенной веб-странице, сколько ресурсов процессора занято и как?) 2. Есть ли какой-то какой-то общий способ создания js-приложения чтобы избежать такой проблемы?

спасибо, любой комментарий оценили!

+0

Какой у вас браузер? (EDIT: О, я вижу FF). Повторили ли вы эксперимент с различными браузерами? –

+0

Вы уже используете профайлер Firebug? с ним вы можете видеть, куда идут ваши звонки. – megakorre

+0

Вы думали о приближении проблемы под другим углом. Вместо использования ajax просто используйте тег meta-refresh для перезагрузки страницы? – NotMe

ответ

3

Некоторые версии Firefox используют подсчет ссылок как стратегию сбора мусора. Считается, что подсчет ссылок подвержен утечке памяти при определенных обстоятельствах.

Internet Explorer и Mozilla Firefox - это два веб-браузера, большинство из которых обычно связаны с утечками памяти в JavaScript. Претендент в Оба браузера - это объектная модель компонента, используемая для управления объектами DOM . Как родной Windows COM, так и XPCOM Mozilla используют справочную сборку мусора для распределения памяти и получение . Подсчет ссылок не всегда совместим с сборкой мусора маркировки и развертки , используемой для JavaScript. В этой статье основное внимание уделяется способам устранения утечек памяти в коде JavaScript. См. Ресурсы, чтобы узнать больше об обработке памяти уровня COM в Firefox и IE.

От http://www.ibm.com/developerworks/web/library/wa-memleak/

0

Вы можете использовать функцию хронологии Chrome, чтобы отслеживать использование памяти с течением времени. Это часть встроенных инструментов для разработчиков. Я уверен, что Firebug или другой плагин FF обеспечит такую ​​же функциональность.

2

Я подозреваю, потребление памяти, потому что в JQuery, каждый раз, когда Ajax вызов сделан, jqXHR создан для управления запросом и последующей обработкой (обратные вызовов, проверки состояния, и т.д.). Я ничего не вижу в документах jQuery, где они автоматически очищаются. Итак, ваш javascript просто складывает их.

http://api.jquery.com/jQuery.ajax/

Смежные вопросы