2010-05-20 12 views
5

Sembra che ci siano molte informazioni sulle perdite di memoria in IE e su come gli sviluppatori web possono evitarle, ma non riesco a trovare molto per evitare perdite in FF. Ho trovato molti suggerimenti casuali su come gli utenti finali possono modificare le loro preferenze, o suggerimenti per gli sviluppatori di estensioni, ma poco su quello che posso fare come sviluppatore web per assicurarmi che le mie pagine non trapelino. Mi sto perdendo qualcosa? Sembra pigro dare la colpa solo all'utente e dire "hai troppe estensioni". O i modelli principali sono gli stessi di IE - riferimenti circolari e tutto il resto?Come posso evitare di causare perdite di memoria in Firefox?

Inoltre, se qualcuno sa di strumenti per la risoluzione dei problemi di perdite in FF, sarebbe fantastico. Ho trovato questo: https://addons.mozilla.org/en-US/firefox/addon/2490/ Ma è apparentemente solo per Chrome e lo sviluppo di estensione.

risposta

3

Al di fuori degli schemi di progettazione per favorire l'unico modo sicuro è testare accuratamente le pagine. Per monitorare l'utilizzo della memoria del browser Task Manager va bene, ma Process Explorer fornisce risultati più precisi.

JavaScript è una causa di perdite di memoria, ma attenzione anche ai filmati flash sulle pagine. Il nostro team per i contenuti ha aggiunto un film del nostro dipartimento di progettazione che ha utilizzato un effetto di transizione da party thrid e questo ingerito 10 Mb ogni 20 secondi circa. Solo guardando il filmato attraverso il loop era ovvio in TaskManager vedere la memoria saltare quando l'effetto si verificava e non rilasciare mai tutto indietro.

+0

Grazie per Process Explorer. Non lo sapevo. Sembra fantastico! – mrdanimal

0

Non so se ci sono informazioni specifiche per Firefox, ma i suggerimenti generici si applicano ancora.

Suggerisco di esaminare da vicino tutti i cicli e le funzioni ricorsive. Riutilizzare gli oggetti esistenti per crearne di nuovi e assicurarsi che gli oggetti temporanei e le primitive chiudano l'ambito in modo che possano essere liberati.

2

È possibile forzare l'esecuzione di un Garbage Collector in FireFox. Il Garbelge Collector distruggerà gli oggetti di rilascio & che non vengono più utilizzati. L'unica possibilità di "Perdere memoria" con un Garbage Collector non è una "perdita" ma un riferimento che non ha senso: rimuovere tutti i riferimenti agli oggetti che non si desidera utilizzare.

saperne di più su questa pagina:
http://adblockplus.org/blog/different-ways-to-force-garbage-collection

2

Un po 'di quello che si legge su come evitare perdite di memoria a i browser tratta di come evitare cose che fanno sì che il browser non riesca a recuperare la memoria che dovrebbe recuperare.

Tuttavia, un problema più sostanziale in molti casi riguarda le pagine Web che si aggrappano agli oggetti di cui non hanno più bisogno. È solo il compito del browser reclamare cose che non sono più "raggiungibili", cioè cose a cui lo script/la pagina non possono più accedere. Se stai accumulando oggetti in una matrice e non li rimuovi quando hai finito con loro, l'utilizzo della memoria aumenterà con l'aumentare della matrice e non c'è nulla che il browser possa fare al riguardo.

Per dirla in un altro modo: questo è un problema di perdita di memoria nella pagina Web piuttosto che nel browser. E lo strumento che vuoi è uno strumento di profilazione della memoria per esaminare gli oggetti che sono raggiungibili nella tua pagina, così puoi dire se ci sono cose che non dovresti più tenere. Scrivere un tale strumento per Firefox è stato nel mio elenco di cose da fare per un po ', ma non ci sono ancora arrivato. Penso che potrebbero esserci dei lavori in corso sulla scrittura di uno che si integri in Firebug.

Problemi correlati