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 № 1Penso 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.