内存泄漏-定期图像下载

发布于 2024-12-05 11:05:23 字数 681 浏览 0 评论 0原文

我编写了一个代码:

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

I make a code :

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);
});

This simple code gets periodically new image and adding it to the DOM.
With each downloaded image browser memory usage increases. Is this code causes a memory leak?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧人 2024-12-12 11:05:24

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

The Ajax request is unnecessary. Just setting the img src to a new URL will suffice:

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

I use detatch() instead of remove() since this keeps the original DOM element around for re-use.

记忆で 2024-12-12 11:05:24

更改函数并没有带来多大影响:

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

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

Changing the function did not give much:

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

Memory usage still increasing. This is due to memory leak in javascript or is there another reason?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文