Sto sviluppando un componente aggiuntivo di firefox utilizzando XUL e voglio misurare e profilare l'utilizzo della mia memoria di estensione.
Come posso fare questo? e controlla quale funzione sta utilizzando la maggior parte dell'uso della memoria e quanta parte dell'uso della memoria si aggiunge a firefox?
Come misurare l'utilizzo della memoria add-on firefox
risposta
Non è possibile misurare l'impatto di una singola funzione, la gestione della memoria in Firefox non funziona a questo livello - funziona con i compartimenti. Se la tua estensione ha una propria finestra, potrai vedere il compartimento di questa finestra sotto about:memory?verbose
(fai clic su "Riduci l'utilizzo della memoria", altrimenti potresti vedere gli oggetti che saranno comunque raccolti). Se il codice della tua estensione viene eseguito nel contesto della finestra del browser, di solito sei sfortunato: non sarai in grado di distinguerlo dagli altri script in esecuzione lì. Lo stesso vale per i componenti XPCOM e i moduli JavaScript: tutti vengono caricati nello scomparto "[System Principal]".
Cosa si può fare per separare gli script da un comparto grande: utilizzare le sandbox, una sandbox ottiene sempre il proprio comparto. Ad esempio, in una finestra del browser si farebbe qualcosa di simile:
Components.utils.import("resource://gre/modules/Services.jsm");
var mySandbox = Components.utils.Sandbox(window,
{sandboxName: "myExtension/browserScript.js"});
mySandbox.window = window; // Expose window variable to scripts in the sandbox
Services.scriptloader.loadSubScript("chrome://myextension/content/browserScript.js",
mySandbox);
mySandbox.init(); // Call function init() of the script in the sandbox
Di conseguenza, un vano chiamato myExtension/browserScript.js
verrà visualizzato sotto about:memory?verbose
e sarete in grado di vedere la quantità di memoria questo script (insieme con gli oggetti crea ecc.) prende esattamente. Cose da tenere a mente:
- Lo script nella sandbox non avrà accesso alle variabili da "esterno". Devi impostare esplicitamente queste variabili come proprietà della sandbox (come ho fatto con la variabile
window
nell'esempio). - Gli scompartimenti non sono economici e passare oggetti tra compartimenti non è economico. Quindi creare un compartimento per ogni funzione sarebbe una cattiva idea a causa dei costi generali coinvolti.
Documentazione: Sandbox, Services.jsm
Aggiornamento: A partire da Firefox 13 cose sono cambiate. Ad esempio, c'è this extension che ti mostrerà tutti gli oggetti attualmente in memoria. Ancora lontano dall'essere comodo, anche ottenere l'intera immagine non è banale, ma ti dà granularità su un livello al di sotto dei compartimenti.
Grazie mille, il mio codice è in esecuzione in sandbox, tutto ciò di cui ho bisogno ora è solo per aggiungere i nomi alla mia sandbox e quindi posso profilarlo, grazie! – Yosi
@Yosy: vedi l'aggiornamento alla mia risposta, ora puoi guardare l'intero grafico degli oggetti JavaScript. –
Grazie Vladimir, grazie alla risposta originale ho ottimizzato l'utilizzo della memoria nella mia estensione, controllerò questa estensione :) – Yosi
- 1. Come sviluppare Firefox Addon?
- 2. Pannello transparency firefox addon
- 3. localizzazione addon di Firefox
- 4. Firefox Addon Downloads.jsm
- 5. Firefox Addon console.log() Non funziona
- 6. Come sviluppare firefox addon usando angularjs
- 7. firefox addon sdk 1.17 cattura screenshot
- 8. Come misurare l'utilizzo della memoria per connessione Apache attiva?
- 9. Come misurare l'utilizzo della memoria heap di picco in Java?
- 10. Come misurare l'utilizzo della memoria grafica di un'applicazione WebGL
- 11. Come misurare l'utilizzo della memoria di un'app Rack o Sinatra?
- 12. Modifica dell'icona di installazione di Firefox addon
- 13. appendChild in un XUL Firefox addon break
- 14. finestra di avviso nel mio addon firefox
- 15. Firefox Addon: come rimuovere le preferenze quando si disinstalla l'addon?
- 16. Come eseguire un comando windows da firefox addon?
- 17. Come sincronizzare le preferenze di firefox addon/extension?
- 18. come utilizzare posta nella funzione "Richiesta" a firefox-addon-sdk
- 19. ottenere gli elementi di documento HTML in firefox addon
- 20. Firefox Extension Addon SDK combina più "pulsanti di azione"
- 21. Come misurare l'utilizzo della CPU e della memoria del codice F #?
- 22. Come misurare l'utilizzo della larghezza di banda della memoria su Windows?
- 23. Installazione in linea di Firefox addon dal sito web
- 24. addon firefox: aggiunta icona al menu di contesto
- 25. Come misurare in modo affidabile la memoria disponibile in Linux?
- 26. Impossibile creare Web Worker in linea in Firefox 35 addon
- 27. "(metodo Callback) non definito" in accesso JSONP su Firefox Addon
- 28. Per analizzare il consumo della CPU dei componenti aggiuntivi di Firefox in SO
- 29. Come posso evitare di causare perdite di memoria in Firefox?
- 30. Apre la finestra di firefox nel selenio con gli addon di firefox caricati?
non sono sicuro che ti possa aiutare ... ma puoi digitare "about: memory" nella barra degli indirizzi, ma non penso che diventerà così dettagliato come speri. –
il about: la memoria non è affatto utile, per capire qualcosa in là ho bisogno di imparare come funziona l'uso della memoria di Firefox ... e questo è troppo. – Yosi