2011-09-19 95 views
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。 隨着每個下載的圖像瀏覽器內存使用量的增加。這段代碼是否會導致內存泄漏?

回答

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元素周圍重新使用。

0

更改功能並沒有太大給:

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

內存使用量還在不斷增加。這是由於JavaScript中的內存泄漏,還是有其他原因?