Alcune pratiche salva memoria

Quale sviluppatore Web 2.0 non ha mai sentito parlare di memory leak in JavaScript?

Probabilmente pochi, mentre molti, invece, potrebbero essere i problemi scaturiti da un’errata gestione dei riferimenti tra funzioni, metodi o librerie client ed il DOM delle nostre fantastiche feature aggiunte tramite JavaScript.

Una buona base di partenza potrebbe essere quella proposta lo scorso 24 Aprile da IBM, intitolata Memory leak patterns in JavaScript, ovvero pratiche comuni per meglio risolvere il problema.

Il breve ma puntiglioso articolo mostra esempi comuni di riferimenti interni a funzioni di vario tipo capaci di rallentare l’esecuzione di codice, sfruttare una quantità eccessiva di RAM del PC del malcapitato utente o mostrare errori in uscita qualora sia installato un plugin apposito in grado di mostrare tutte le perdite di memoria introdotte dall’ultima pagina visualizzata.

Per aiutare i meno esperti eccovi spiegati alcuni termini fondamentali e ricorrenti dell’articolo:

  • Closures: intesi come blocchi di codice “privato” o per meglio dire innestato in altro codice come una funzione interna, una variabile utile a trasportare informazioni tra funzione-superiore e funzione-innestata, altro ancora, in generale sfruttate per non perdere i riferimenti a proprietà o metodi esterni ma che potrebbero diventare relazioni vincolanti per il motore JavaScript e il DOM
  • Circular references: intesi come riferimenti temporanei che in realtà non cessano di persistere in memoria una volta ultimata l’esecuzione della funzione, causa principale degli stessi memory leaks

Per chi fosse meno interessato grazie all’uso di librerie note ricordo che script.aculo.us, basato su Prototype, alcuni componenti di Dojo ed altre grandi librerie soffrono, almeno fino a poco tempo fa, di queste problematiche e il consiglio in questo caso è molto semplice: aggiornatevi sempre all’ultima versione stabile della vostra libreria preferita.

Buona lettura, per concludere, a tutti quelli che scrivono anche poco JavaScript, ma lo sfruttano per interagire con il DOM.

Ti consigliamo anche

Link copiato negli appunti