2013-02-14 6 views
0

У меня, похоже, есть утечка памяти в IE9. Он отлично работает в Chrome. Утечка памяти находится на клиентской машине. Я оставил эту страницу открытой в течение нескольких дней в хроме и без утечки.утечка памяти в IE9

Использование JQuery 1.9.0, signalr RC2

Эта страница использует signalr и обновляет его содержимое каждые 5 секунд, что приходит с сервера.

У меня есть четыре вкладки/divs, которые делают это.

proxy.on('newRequests', function (data, updatetime) { 
    newrequestupdatetime.text('Last updated: ' + updatetime); 
    numberofnewrequests.text('Number of cases found: ' + data.length); 
    numberofnewrequeststab.text('(' + data.length + ')'); 
    var h = ''; 
    $.each(data, function (i, val) { h += '<li><a href="/requests/' + val.Ref + '">' + val.Ref + '</a> ' + val.Type + '</li>'; }); 
    newrequests.html(h); 
}); 

newrequests является уль на странице, которую я инициализируется как этот

var newrequests = $('#newrequests');

в

$(function() {});

Не совсем уверен, что является причиной.

Я могу сделать это намного хуже, сделав это.

newrequests.empty(); 
    $.each(data, function (i, val) { newrequests.append('<li><a href="/requests/' + val.Ref + '">' + val.Ref + '</a> ' + val.Type + '</li>'); }); 
+0

причиной того, что? Вы только сказали, что у вас «есть утечка памяти». Что это значит? Каков фактический симптом? –

+0

Это означает, что вкладка в IE сохраняет все больше и больше памяти, не отпуская ее. – chrissie1

+0

Существуют ли проблемы с производительностью? Является ли система под давлением памяти? (Если нет проблем с производительностью и нет давления памяти, освобождение памяти бессмысленно.) –

ответ

2

Я предполагаю, что это имеет какое-то отношение к последней строке кода, который помещает новый HTML внутри уль тега. Попробуйте изменить строку в этом (старый код):

document.getElementById('newrequests').innerHTML = h; 

Смотрите также: jQuery - Internet Explorer memory leaks

+0

Все еще там, в jQuery 2.0.0, предлагаемое изменение работает. – NoLifeKing