У меня проблема с утечкой памяти, которую я пытаюсь отследить в веб-приложении, используя jQuery-1.7.1.Приложение отправляет POST-запрос на сервер для получения некоторых результатов поиска, используя сложную форму.После того, как я удалил большую часть кода js (для целей отслеживания утечек), голая функция выглядит следующим образом:
$(function() {
// bind the search action
$('#search-button').unbind('click').click(function() { doSearch(); });
});
function doSearch() {
// get the query string from the search form
var query = $('#search-form').serialize();
// perform search and render results
$.post('/search', query, function(data){
// nothing here now (trying to debug)
data = null;
}, 'json');
query = null;
}
Я вижу, что потребление памяти накапливает дополнительные ~ 1 МБ каждый раз, когда я нажимаю кнопку поискахотя, по сути, это ничего не делает.Это реальная проблема, так как приложение имеет режим поиска «автообновление», при котором этот вызов выполняется примерно раз в минуту, поэтому если оставить его активным, оно через некоторое время заклинит браузер.
Объект data
, возвращаемый с сервера, содержит логическое значение для успеха / неудачи и html-строку для рендеринга (довольно большая в случае успеха, около 1 МБ или около того):
data = {
success : true/false,
html : "<div id='results'>.....</div>"
}
Так как я собираюсь выполнить zilch в реальном теле обратного вызова, я подозреваю, что каким-то образом этот data
не удаляется из области видимости и агрегируется в памяти.Я попытался установить его в null
в конце обратного вызова, но это не сработало.Это было проверено на chrome и firefox (более ранние и последние выпуски для обоих).Я что-то пропустил?Любые мысли помогут - спасибо.