内存泄漏-定期下载映像

Memory leak - periodically image download

本文关键字:下载 映像 泄漏 内存      更新时间:2023-09-26

我创建了一个代码:

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中。每下载一张图片,浏览器的内存使用量就会增加。这段代码会导致内存泄漏吗?

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元素以供重用。

改变函数并没有多大作用:

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

内存使用率仍在增加。这是由于内存泄漏在javascript或有其他原因?