2010-11-10 58 views
0

在執行以下操作時,我可以觀察內存使用情況,只需在chrome中的任務管理器中翱翔。我不明白。如果我註釋掉一行($(「#main_table tbody」)。html(string);),那麼世界上一切都很好。有什麼想法嗎?感謝大家。哦,這是一個「setTimeout」循環每秒運行一次,這就是我看到內存爬得更高,因爲它每秒執行一次。jQuery html()內存問題

$.ajax({ 
    type: "GET", 
    dataType: 'json', 
    url: '<?php echo base_url();?>includes/updateTable.php', 
    cache: false, 
    data: dataString, 
    success: function(data) 
    { 
     var string = ''; 

     $.each(data.monitorData, function(i,monitor) 
     { 
     string = string + '<tr id="r'+monitor['id']+'">'; 

     for (var key in monitor) 
     { 
      string = string + '<td>'+monitor[key]+'</td>'; 
     } 
     string = string + '</tr>'; 
     }); 

     $("#main_table tbody").html(string); 
    } 
    }); 
+2

我們在這裏談論多少'monitorData'?一打?一百?一千? – 2010-11-10 21:18:52

+0

你可以嘗試$(「#main_table tbody」)[0] .innerHTML = string;看看是否有幫助。 – RussellUresti 2010-11-10 21:23:17

+0

@user,使用firebug和console.log監視器[key]及其具有的內容以及爲什麼內存跳起來,有時會發生字符串連接問題。 – kobe 2010-11-10 21:26:35

回答

1

你嘗試過之前

$("#main_table tbody").html(string); 

它在技術上不應該有所作爲,但右側添加

$("#main_table tbody").empty(); 

....

+0

@Pekka表中的280行和16個單元格,所以我猜4480個字段。內存使用量在Chrome中每秒大約增加1MB。我試着剛纔做整個數組的事情,並推動每個部分,併爲此表$(「#main_table tbody」)[0] .innerHTML = string.join(「」);它仍在增長相同 – TheDayIsDone 2010-11-10 22:16:23

0

這有可能是因爲該字符串var在lambda函數中使用(在$ .each中),javascript不是垃圾收集它。

嘗試增加:

delete string 

的成功函數的末尾。

+0

這可能無法正常工作,具體取決於「string」是否可以被視爲對象的屬性。 – 2010-11-11 02:03:43