内存泄漏 - 定期下载图像

时间:2011-09-19 13:47:24

标签: javascript jquery memory-leaks

我制作了一个代码:

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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

更改功能并没有给出多少:

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

内存使用量仍在增加。这是由于javascript中的内存泄漏还是有其他原因?