/ / Evita perdite di memoria nel dojo? - javascript, dojo

Evita perdite di memoria nel dojo? - javascript, dojo

Per applicazioni a lunga esecuzione nel browserusando un kit di strumenti come il dojo, sento ripetutamente il punto che i riferimenti penzolanti devono essere evitati. Ma ogni linguaggio / framework ha le sue idiosincrasie quando si tratta di gestione della memoria.

Come posso evitare di ciondolare i riferimenti durante la creazione di un'app nel dojo? Sto pensando a regole sulla falsariga di "alloc" in iOS: come usare e come ripulire dopo di te quando hai finito.

risposte:

2 per risposta № 1

Penso che la cosa più importante che viene in dojo è che dovresti ricordare di disconnettere qualsiasi evento connesso.

C'è un semplice schema in questo, ad esempio in un dijit personalizzato:

//connecting some events
this._events = [
dojo.connect(...),
dojo.connect(...)
];

Ora, è molto semplice disconnettersi:

dojo.forEach(this._events, dojo.disconnect, dojo);

Lo stesso schema si applica quando si usa this.connect in un dijit.


1 per risposta № 2

Va anche notato che anche se si segue la buona pratica di disconnettere i gestori di eventi citati in questa rispostapotresti finire nei guai. Potrebbero esserci riferimenti ciclici che il garbage collector non è in grado di rilevare, o riferimenti che non sono rilasciati correttamente da Dojo stesso. A volte è necessario chiamare esplicitamente "cancella" su di essi. Vedere Questo come esempio.