Утечка памяти - периодически загружается изображение - PullRequest
0 голосов
/ 19 сентября 2011

Я делаю код:

var camImage = camImage || {};
camImage.getImg = function() {
    var currDate = new Date(); 
    var image = null;
    var link = 'http://localhost/picture.php?rand='+currDate.valueOf();
    $.ajax({
        url: link,
        success: function(){
            $('#camera img').eq(0).remove();
            image = $('<img />').attr('src', link);
            $('#camera').append(image);
            link = null;
            image = null;
            currDate = null;
        }
    });

};
$(document).ready(function(){
    setInterval(camImage.getImg, 1000);
});

Этот простой код периодически получает новое изображение и добавляет его в DOM. С каждым загруженным изображением браузер увеличивает использование памяти. Этот код вызывает утечку памяти?

Ответы [ 2 ]

4 голосов
/ 19 сентября 2011

Запрос Ajax не нужен. Достаточно просто установить img src на новый URL:

camImage.getImg = function() {
    var src = 'http://localhost/picture.php?rand=' + (new Date()).valueOf();
    $('#camera img:first').detach().attr('src', src).appendTo('#camera');
}

Я использую detatch() вместо remove(), поскольку это позволяет сохранить исходный элемент DOM для повторного использования.

0 голосов
/ 20 сентября 2011

Изменение функции не дало много:

camImage.getImg = function() {
  var src = 'http://localhost/picture.php?rand=' + (new Date()).valueOf();
  $('#camera img:first').detach().attr('src', src).appendTo('#camera');
}

Использование памяти все еще увеличивается. Это связано с утечкой памяти в javascript или есть другая причина?

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