Утечка памяти в JQuery DOM в IE - PullRequest
2 голосов
/ 12 января 2012

Мы обнаружили серьезную утечку памяти в IE при выполнении манипуляций с DOM.По сути, мы делали это:

function updateTable(){
    $.get('table.jsp', {}, function(data){
        $('#dataTableContainer').empty().html($(data).find('#dataTable'));
        setTimeout(updateTable, 1000);
    });
}

и повторяли этот метод каждую секунду.Из того, что мы смогли увидеть, этот метод пропускал около 1 МБ памяти каждые 10 секунд с jQuery 1.7.1 (это было еще хуже с более старыми версиями).

Мы что-то не так делаем?Мы попробовали несколько решений, уже опубликованных в stackoverflow (например, утечка памяти в jQuery с удалением DOM ), но ни одно из них не сработало.

1 Ответ

0 голосов
/ 14 января 2012

Попробуйте:

function updateTable(){
    $.get('table.jsp', function(data){
        var dt = $(data).find('#dataTable').html()
        $('#dataTableContainer').html(dt);
        setTimeout(updateTable, 1000);
    });
}

Метод html jQuery получает строку или функцию, а НЕ объект запроса, как вы делаете.Метод html заменяет содержимое, поэтому нет необходимости использовать метод empty .

...