Ho studiato un po 'su questo, ma soprattutto mettendo insieme altre domande, il che lascia ancora qualche dubbio. In un'app che non aggiorna la pagina del browser in qualsiasi momento e potrebbe durare per un po '(ore) senza chiudere (supponendo che il refresh di una pagina o la navigazione verso un'altra riavvii il codice js), qual è il modo migliore per garantire che gli oggetti siano rilasciato e che non c'è perdita di memoria.Vita degli oggetti JavaScript e perdite di memoria
Questi sono gli scenari specifici Sono preoccupato:
Tutto il codice qui sotto è all'interno di un modello del modulo rivelatore.
mycode = function(){}()
variabili all'interno delle funzioni, sono sicuro che questo è raccolto dal GC bene
function(){ var h = "ss";}
variabili all'interno del modulo, dovrebbe g = null quando non è più necessaria?
var g;
function(){ g = "dd";}
E infine la vita di un jqXHR: viene ripulito dopo il suo ritorno? Dovrebbe essere impostato su null in tutti i casi come precauzione se conservato all'interno di una funzione o di un modulo?
Se facendo questo, è vero X ripulito dal GC dopo ritorna ?:
function(){
var x = $.get();
x.done = ...;
x.fail = ...;
}
Che ne dite di quando si fa questo, sarà anche essere ripulito dopo x rendimenti ?:
var x;
function(){
x = $.get();
x.done = ...;
x.fail = ...;
}
Infine, c'è un modo per pulire tutte le variabili e riavviare un modulo senza riavviare il browser?
Se stai pensando a perdite di memoria, non dovresti pensare alle variabili. Pensa agli oggetti e ai riferimenti e alle implicazioni di raggiungibilità che questi ultimi hanno per il primo. – delnan
Sì, è solo che penso a tutto in js come variabile, ma capisco il tuo punto. Grazie. –