Perché Firefox provoca "picchi" di utilizzo elevato della CPU ogni pochi secondi?


9

Quando avvio Firefox, non ho problemi per un po ', ma dopo un paio di giorni iniziano a verificarsi picchi di CPU. Durante un picco, Firefox si blocca e quindi si arresta. I picchi si verificano ogni sette-dieci secondi e ogni picco dura da due a tre secondi . Se sto digitando quando si verifica un picco, i caratteri vengono emessi solo dopo il picco. Inizialmente pensavo che questo problema fosse dovuto a Flash, quindi l'ho disabilitato, ma il problema persiste.

Inoltre, l'utilizzo della memoria di Firefox aumenta a oltre 600 MB dopo diversi giorni.

L'elenco dei plugin e delle estensioni di Firefox che utilizzo è disponibile qui .


6
Firefox ha sempre avuto perdite di memoria, quella parte è normale.
John T,

Il sintomo viene rilevato nel bug 490122 . Sembra che non li provi più in Firefox 4+ - per fortuna.
Roman,

1
E ogni nuova versione che promettono di averlo risolto! google.com.au/…
Matthew Lock,

1
@MatthewLock Che ne dici di questo ? Sembra che solo gli utenti di Reddit abbiano la sensazione che questo venga indirizzato ad ogni versione ...
Daniel Beck

Risposte:


8

Sospetto che sia il Garbage Collector o il Cycle Collector.

In about:configcambio javascript.options.mem.loga true. Ora gli avvisi su GC e CC dovrebbero essere disponibili nella console degli errori ( Crtl+ Shift+ J) Se i loro tempi e durata corrispondono al congelamento, allora questo è il tuo problema.

Quando ho avuto questo problema, l'ho risolto soffiando via il mio profilo di Firefox e creandone uno nuovo da zero. I profili di Firefox hanno la tendenza a raccogliere molto greggio nel tempo.

Anche questa non è una soluzione perfetta. Se apri molte schede in Firefox (100+) o molte estensioni e lasci Firefox in esecuzione per giorni e giorni, inevitabilmente rallenterà. Occorrerà riavviare Firefox ogni tanto.

Se sei come me e hai la tendenza a raccogliere una grande raccolta di schede di cui devi occuparti a un certo punto, un altro trucco che uso è impostare browser.sessionstore.max_concurrent_tabssu 0. Ciò impedirà a Firefox di caricare tutte le schede della tua sessione all'avvio. Li caricherà invece quando si passa a loro. Trovo questo, oltre al riavvio occasionale di Firefox, riduce notevolmente il carico di avere un sacco di schede.


2
C'è un plugin per Firefox chiamato BarTab. Presumo che faccia la stessa cosa su browser.sessionstore.max_concurrent_tabs
Boris_yo

1
Sì, anche se credo che non sia aggiornato per Firefox 4.
Mr Alpha,


1
"max_concurrent_tabs" non sembra essere in Firefox 40 (2015-08).
Peter Mortensen,

Penso che l'attuale equivalente di max_concurrent_tabs sia l'impostazione nelle preferenze in "Generale", chiamata "Non caricare le schede fino a quando non viene selezionata".
Miyalys,

9

In about:config, impostare browser.sessionstore.intervalsu un numero elevato (dovrebbe essere 10,000o 15,000; impostarlo su about 600,000).

Fondamentalmente, questo è il numero di millisecondi tra le volte in cui Firefox aggiorna la "sessione salvata". Se hai molte schede aperte o una lunga cronologia di navigazione (o, come spesso accade con me, entrambe), questo può scrivere una quantità ridicola di dati nel sessionstore.jsfile ogni 10 o 15 secondi, il che può causare video Flash congelare brevemente o addirittura bloccare l'intero computer ogni pochi minuti.

L'impostazione di questo valore su un numero elevato ha lo svantaggio che, se Firefox si arresta in modo anomalo, perdi gli ultimi minuti della cronologia di navigazione quando tenti di ripristinare. Secondo me è un piccolo prezzo da pagare.

I picchi della CPU dovrebbero diventare molto meno frequenti.


2
Ho installato il plugin Session Manager. Inoltre salva le sessioni consentendo una migliore gestione e personalizzazione. Che cosa succede se Firefox e questo plugin aggiornano entrambe le sessioni causando un elevato utilizzo della CPU e arresti anomali? Esiste un modo per disabilitare la funzione di aggiornamento della sessione di Firefox e mantenere Session Manager?
Boris_yo,

1
In Firefox 40, sembra salvarlo nel file "\ sessionstore-backups \ recovery.js" (nota: nella sottocartella "sessionstore-backups") invece di "sessionstore.js" (e la versione precedente in "\ sessionstore- backup \ recovery.js ").
Peter Mortensen,

1
OK, questo sembra essere cambiato con Firefox 33 (2014-06), non con Firefox 40.
Peter Mortensen,

4

Non risolverà perdite di memoria di per sé. Ma abilitando "Non caricare le schede fino a quando non viene selezionato", le schede non verranno caricate almeno fino a quando non si fa clic su di esse dopo un riavvio, il che riduce la memoria.

Ho anche scoperto che usare CCleaner per pulire la "Sessione" di Firefox mi ha aiutato un po '. Eseguire prima il backup di tutte le schede aperte poiché rimuove le informazioni di recupero della sessione. Prima di eseguire CCleaner il mio file sessionstore.js era di circa 800 KB, ma in seguito è sceso a circa 6 KB.

Maggiori informazioni su sessionstore sono disponibili in Risolto: Firefox si blocca ogni 10 secondi, lo scorrimento è Jumpy .

La disinstallazione di Flashblock ha risolto i miei problemi di CPU con Firefox. Forse Flashblock e Adblock Plus o qualche altra estensione non vanno d'accordo?

La vita è troppo breve per scherzare con Firefox. Ho appena esportato i miei segnalibri, disinstallato Firefox, quindi eliminato tutte le cartelle di Firefox sul computer, quindi reinstallato Firefox da zero e ripristinato i segnalibri. Ora funziona più velocemente di Google Chrome con un'installazione totalmente nuova.


2

È molto difficile da dire. È solo l'uso generale che lo causa o stai accedendo a un sito specifico? (Abbiamo avuto un problema in cui un browser ha guadagnato memoria nel tempo a causa di una perdita di memoria in jQuery ).

Supponendo che tu stia utilizzando un sistema operativo Microsoft, potresti provare a utilizzare lo strumento Process Monitor di Microsoft . Sputa un sacco di messaggi, ma dovresti essere in grado di restringerli all'intervallo in cui si è verificato il "blocco" e forse vedere quale processo sta eseguendo il blocco.


jQuery può avere una perdita di memoria? Hrmmmmm
Jeff F.

1
Può succedere. Vedi questo elenco di ticket bug jQuery: bugs.jquery.com/search?q=leak&go=&ticket=on . Ci siamo incontrati perché abbiamo costantemente colpito una singola pagina (attraverso una richiesta AJAX attivata a intervalli) che ha provocato una perdita abbastanza grande.
James Wiseman,

1
Sembra più un problema del browser e meno di un problema di gennaio è quello che sto dicendo, dato che non può essere eseguito ma in un browser (bene, comunque nella maggior parte dei casi) :) (se while (1 == 1) {} si arresta in modo anomalo a browser Dò la colpa al browser: P)
Jeff F.

1
Mentre hai ragione nell'affermare che il browser è in errore (alcuni dei bug sul link sopra erano correlati all'incapacità di IE di gestire correttamente i riferimenti circolari), ci sono passaggi che uno sviluppatore può adottare nel proprio codice JS per migliorare questi problemi. In C / C ++ devi ripulire la memoria che hai allocato manualmente in quanto non c'è GC per farlo. In caso contrario, si tratta di un errore del codice o del runtime? Direi che non tenere conto delle limitazioni del tuo ambiente può essere considerato un bug per tuo conto e sembra che sia esattamente così anche il team di jQuery lo vede.
James Wiseman,

1
Bene, questo è finito in una discussione sciocca: P. JavaScript non è un codice, è uno script; lo script viene eseguito all'interno di un altro programma. Un programma mal scritto viene eseguito da solo, per questo richiede una scrittura corretta. Un buon programma che accetta script eviterà che si rompa da solo. Quindi, se controlli bugzilla, vedrai quelli che sono considerati bug relativi a JavaScript scritto male che causano l'arresto anomalo di Firefox. Questo argomento è piuttosto supponente, quindi lo lascerò a quello! (Il primo commento è stato più uno scherzo poiché il browser non perde jQuery)
Jeff F.

0

Se non lo fai già, potresti provare ad aggiornare all'ultima versione di Firefox. Hanno lavorato duramente per ridurre quelle perdite di memoria.


Ho sempre aggiornato e il problema è rimasto. Preferisco vivere con Firefox 3.6.17
Boris_yo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.