Очевидная утечка памяти в веб-приложении (может быть, из AJAX?) - PullRequest
1 голос
/ 26 ноября 2009

Я запускаю запрос AJAX с веб-страницы с поддержкой JavaScript (+ jQuery) каждые 5 секунд для набора данных JSON. Я оставил свою заявку на ночь, а к утру мой компьютер полностью завис. Я сузил его до своего веб-браузера и теперь, используя трекер ресурсов Google Chrome, я вижу, что каждый запрос вносит новый расход памяти, а старый JSON задерживается.

Поскольку исходный JSON постоянно меняется, я называю его меткой времени в качестве параметра, чтобы избежать кэширования ... Я понимаю, что кэширование решит эту проблему, но также сделает мои данные недействительными.

Есть идеи? Я перезаписываю предыдущую переменную, поэтому не понимаю, почему предыдущие данные должны быть сохранены. Увеличение объема памяти не происходит в тот же интервал времени при запросах AJAX, так что, возможно, это что-то еще. Я был бы рад отправить кому-то код в частном порядке, если это поможет.

Спасибо всем: -)

Gausie

Ответы [ 3 ]

1 голос
/ 26 ноября 2009

Что вы делаете с данными?

Вероятно, виновником не является jquery.

Ты растешь? Вы забыли объявить переменную, используя префикс var? Вы удаляете контент, используя innerHTML = ''?

0 голосов
/ 26 ноября 2009

Невозможно ответить, потому что вы не предоставили пример кода. В общем, проверьте на неправильное использование закрытия ... В любом случае - проверьте этот пост http://www.crockford.com/javascript/memory/leak.html и используйте Google или приведите несколько примеров. Удачи!

0 голосов
/ 26 ноября 2009

Сначала убедитесь, что утечка вызвана запросом ajax. Не запрашивайте этот ajax каждые 5 секунд и проверяйте, все ли утечки памяти.

Если это запрос, возможно, вы перезаписали одну переменную, но у вас есть другая переменная, указывающая на эти данные? Примерно так:

var a = json_object;
var b = json_object;
//A lot of other code here
var a = json_object2;

json_object все еще находится в памяти, на него указывает var b. Если нет var b, может быть, вы добавите его в какую-нибудь карту или массив? В этом случае на него указывает карта или массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...