2011-08-22 8 views
9

In Firefox (credo a partire da Firefox 4) abbiamo la pagina about:memory. Anche se ho una certa familiarità con la gestione dinamica della memoria C/C++, devo ammettere che non so davvero come leggere quella pagina.Come leggere correttamente Firefox "about: memory"?

Speravo che about:memory mi desse, come sviluppatore JavaScript/front-end, un modo migliore per rilevare/trovare perdite di memoria, create in ECMAScript e/o script DOM. Sto testando su un sistema Windows 7 e Mac OS X Snow Leopard.

Quindi ho alcune domande e spero che qualcuno possa rispondere a quelle (per favore non indovinare se non si è sicuri).

  • Windows 7 differenza tra win32/privatebytes e Memory in use.

Questo mi dà davvero fastidio. Se sto eseguendo alcune pesanti operazioni ECMAScript/DOM, il precedente valore sembra aumentare fino alla fine, laddove invece Memory in use continua ad essere "piccolo". Quale valore è davvero interessante qui? Sembra che win32 privatebytes sia lo stesso valore che puoi vedere nel tuo Task Manager.

  • Qual è la differenza tra Memory mapped e Memory in use?

Sto cercando su google per un po 'di tempo su questo. Alcuni dicono che indica quanta parte della memoria in uso è frammentata. Cosa significa in dettaglio? È un indicatore diretto di perdite di memoria?

Sarei felice se qualcuno potesse spiegare la maggior parte dei valori solo un po '(o collegare una risorsa che non ho trovato). Ma la cosa più interessante per me è il grande divario tra questi win32 privatebytes e l'utilizzo della memoria del browser. Max OS X non sembra avere un equivalente per quei valori, che suppongo sia dovuto a un sistema di gestione della memoria diverso e fondamentale.

+1

È necessario aggiornare Firefox. Le categorie menzionate non esistono più in Firefox 6, la lista è più facile da capire. –

+0

@Wladimir: davvero. FF6 lo rende molto più chiaro. – jAndy

risposta

1

Si dovrebbe preoccuparsi solo sulla memoria effettivamente utilizzata dal browser. Ci sarà sempre più memoria allocata a livello di sistema operativo, a causa della frammentazione della memoria, ecc. Ma questo è davvero qualcosa a cui solo gli sviluppatori di browser devono pensare. Se vedi un comportamento patologico riproducibile - archivia un bug di Mozilla (necessario un banco di prova ridotto al minimo). Ma a parte questo, dovresti solo assicurarti che il tuo codice non accumuli oggetti che non possono essere rilasciati (che è visibile dalla memoria utilizzata).

Non sono sicuro se "memoria mappata" sia visibile nella nuova versione di about:memory, magari con un nuovo nome. Sono abbastanza sicuro che non dovresti preoccupartene comunque. Questa è la quantità di memoria a cui è assegnato un indirizzo, qualcosa che è interessante solo a livello di sistema operativo.

1

Questo blog Mozilla sembra spiegare abbastanza bene, e se no, allora hai i dati di qualcuno sapere:

http://blog.mozilla.com/nnethercote/2011/05/23/a-better-aboutmemory-stage-1-75/

+0

buona risorsa, grazie. Ma sono confuso dal punto di vista che viene visualizzato lì, sembra almeno diverso da FF5. Quelle allocizioni "implicite" ed "esplicite" sono piuttosto belle, ma non visibili a mio avviso qui. – jAndy

+0

Ahh sì, è un peccato: il punto di vista era specificamente FF4, ho appena aggiornato la mia installazione locale su FF5 e anche questo sembra diverso. Fare clic sul collegamento "Verbose" aiuta? –

+0

Detto questo, il poster del blog ha indicato che questa nuova vista è una combinazione dei due alberi precedenti, sebbene continui a vedere che potresti perdere alcune allocazioni a livello di sistema operativo, sebbene sia rappresentato l'intero heap; Aggiungerà anche un po 'più di cronisti della memoria' per importanti allocazioni a livello di sistema operativo ', che potrebbero essere di qualche utilità per voi quando ciò andrà in diretta. –

0

Rispondendo alla domanda generica nel titolo del thread, e non le domande specifiche, che sembrano essere risolti:.

  • Hover la misura che ti interessa Hanno tooltip con qualche spiegazione.
  • Se sei interessato ai dettagli, a volte è illuminante leggere la discussione (in bugzilla) dietro la misura.
    Per trovare la discussione, cercare il codice mozilla per il nome della misura, ad es. http://mxr.mozilla.org/mozilla-central/search?string=heap-dirty, selezionare il link "Hg Blame", fare clic sul collegamento prima della linea con il nome della misura (appare come <user>@<revid>) e fare clic sul collegamento changeset (come changeset NNNNNN a6b3a22fbca7) quindi fare clic sul collegamento del bug.