2010-11-10 7 views
0

en faisant ce qui suit je peux regarder l'utilisation de la mémoire planer dans le gestionnaire de tâches en chrome. je ne comprends pas. si je commente une ligne ($ ("# main_table tbody"). html (string);) alors tout va bien dans le monde. Des pensées? Merci tout le monde. oh cela est exécuté une fois par seconde dans une boucle "setTimeout" c'est comment je vois la mémoire grimper plus haut comme il le fait une fois par seconde.jQuery html() problème de mémoire

$.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

De combien de 'monitorData' parlez-vous ici? Une douzaine? Cent? Un millier? –

+0

Vous pouvez essayer $ ("# main_table tbody") [0] .innerHTML = string; pour voir si cela aide. – RussellUresti

+0

@user, utilisez firebug et console.log le moniteur [key] et ce qu'il a et pourquoi la mémoire saute, parfois la concaténation de chaînes se heurte à des problèmes de mémoire. – kobe

Répondre

1

Avez-vous essayé d'ajouter

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

juste avant

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

Il devrait techniquement pas faire une différence, mais ....

+0

@Pekka 280 lignes dans la table et 16 cellules donc 4480 champs je suppose. l'utilisation de la mémoire augmente à environ 1 Mo par seconde en chrome. J'ai essayé tout à l'heure de faire tout le tableau et d'y pousser chaque partie et de le faire pour la table $ ("# main_table tbody") [0] .innerHTML = string.join (""); – TheDayIsDone

0

Il est possible que, depuis la chaîne var est utilisé dans la fonction lambda (dans $ .each), javascript n'est pas la collecte des ordures.

Essayez d'ajouter:

delete string 

à la fin de la fonction de réussite.

+0

Cela peut ne pas fonctionner selon que 'string' peut ou non être vu comme une propriété d'un objet. –