Archivio > Fuori tema > Singolo: Ridurre il consumo di memoria di Firefox 2.0

Ridurre il consumo di memoria di Firefox 2.0

[Immagine] Una guida più o meno dettagliata su come provare a migliorare le prestazioni del browser tramite qualche piccolo accorgimento a livello di configurazione e personalizzazione. Dopo aver constatato con i miei occhi che non sono l'unico a lamentare l'esagerato uso di memoria da parte di Mozilla Firefox, ho deciso di riassumere, sulla base dell'articolo su MozillaZine, alcuni procedimenti che potrebbero migliorare la situazione.

Premessa

Prima di continuare, vorrei concedermi una premessa. La maggior parte del materiale sottostante proviene da traduzioni più o meno precise di testi inglesi, pertanto usate queste informazioni con estrema cautela, poichè non è detto nè che portino risultati ottimali, nè che siano sicure, nè che siano vere. Per cui, una volta consultate, confido nel vostro buon senso prima di farne uso e, eventualmente, combinare disastri o danni collaterali. Il mio consiglio è quello di **effettuare un backup del vostro profilo: per sapere come fare andate a fondo pagina, alla voce Conclusioni.
Se vi esplode il gatto, insomma, la colpa non è mia.

Seconda premessa: questo articolo si riferisce alla versione 2.0 dell'applicazione, sebbene vi siano continui riferimenti anche a rilasci precedenti. A fondo pagina, comunque, trovate la lista di tutti i testi citati.

Individuare il problema

Innanzi tutto è bene elencare i motivi per cui il browser richiede un uso fin troppo elevato di memoria:

  • Estensioni e temi

    Estensioni e temi aggiuntivi possono ovviamente appesantire l'intera applicazione, e se mal strutturati causare anche alcuni memory leak.
    A tal proprosito, avviare l'applicazione in safe mode può aiutarci a capire se effettivamente gran parte della colpa è da attribuire ai componenti aggiuntivi.

    Io ho fatto una prova, con queste condizioni:

    • 12 schede aperte (e ovviamente non vuote)
    • 15 estensioni installate (escluse le predefinite)
    • 1 tema installato (quello predefinito)

    Il consumo di memoria è sceso dagli ~84MB iniziali ai ~39MB in modalità provvisoria.

  • Plugins

    Stesso problema vale per i plugins attivi. Una volta caricati (ovvero all'avvio di Firefox) essi non rilasceranno memoria fino a che non chiuderete il browser.

  • Configurazione

    Come vedremo, alcune impostazioni di base possono essere modificate affinchè il browser risulti più ottimizzato per la memoria fisica presente nel computer.

  • Pagine aperte

    Alcune pagine esageratamente pesanti possono rallentare l'esecuzione, specialmente se viene fatto largo uso di codice javascript.

  • Altro

    Altre possibili cause prevedono l'utilizzo di applicazioni esterne al panda rosso, specialmente quelle che si occupano di modificare l'aspetto di base (GUI) del nostro desktop: in particolare, su Windows è sconsigliato l'uso di WindowsBlinds; è bene considerare tuttavia che temi particolarmente complessi e/o caratterizzati da un largo uso di immagini e decorazioni possono causare altrettanti rallentamenti.

Sconfiggere il mostro

Estensioni

Bene, arrivati a questo punto dovreste avere fastidiosi sensi di colpa per aver installato un numero indecifrabile di estensioni inutili e non necessarie.

Ironia a parte, ci tenevo a chiarire una cosa: abbiamo precedentemente appurato che un numero elevato di componenti aggiuntivi possono incrementare l'uso di memoria da parte del browser.
Il mio consiglio è quello di riguardare con obiettività e sincerità la vostra lista, cercando di capire quali estensioni sono veramente necessarie per la vostra navigazione: io mi sono reso conto di averne alcune apparentemente essenziali, che poi si sono rivelate inutili, sia perchè praticamente mai sfruttate, e sia perchè gran parte delle loro funzioni erano già state implementate da altri addons.

Potete eventualmente scegliere di disattivare temporaneamente un'estensione, fino al momento in cui per qualche motivo non ne avrete di nuovo bisogno. Non so dirvi se realmente è un trucco che funzioni, ma tanto vale provarci.

Esiste, comunque, una lista di estensioni problematiche, potenzialmente pericolose per l'accumulo di memoria: controllate se fra esse vi sono anche quelle da voi installate, e se possibile cercate di seguire i workarounds proposti. Se vi venisse consigliato di disinstallare il componente, potete cercarne un altro fra la lista ufficiale delle estensioni che svolga le medesime funzioni con minor dispendio di risorse (considerando il numero di pubblicazioni sono sicuro che vi siano molte ghiotte alternative su cui fare affidamento).

Plugins

Un discorso a parte va fatto per i plugins che, come già detto, occupano memoria fino a quando l'applicazione non viene chiusa. Questo comportamento è abbastanza scomodo, per tanti motivi: ad esempio, chi mi dice che io abbia bisogno sempre di visualizzare documenti in formato PDF, filmati Flash e ShockWave, audio e video, o persino intere applicazioni Java? E' scomodo disattivarli, ma se pensiamo a quelli che utilizziamo di più, allora forse possiamo migliorare le cose.

Ad esempio, nella mia schermata about:plugins ho notato che molti mimetypes sono gestiti contemporaneamente da più applicazioni: ad esempio, video/mpeg si trova sia in VLC multimedia plugin che in Totem Web Browser Plugin 2.16.2, e che l'unica cosa che fa in più quest'ultimo è gestire files WAV. In più, è presente anche Helix DNA Plugin: RealPlayer G2 Plug-In Compatible, e l'unica cosa che fa è leggere il formato RealPlayer. Ho pensato di escludere questi ultimi due plugins, almeno per ora, dall'avvio di Firefox.

Come?

Su Linux i plugins si trovano in /usr/lib/firefox/plugins, anche se la maggiorparte di essi puntano con un collegamento simbolico a /usr/lib/mozilla/plugins.

Le due librerie di sistema per Totem Web Browser Plugin 2.16.2 e Helix DNA Plugin: RealPlayer G2 Plug-In Compatible sono rispettivamente libtotem-basic-plugin.so e libtotem-complex-plugin.so. Per disattivarle possiamo rinominarle in questo modo:

$ sudo mv /usr/lib/firefox/plugins/libtotem-basic-plugin.so /usr/lib/firefox/plugins/libtotem-basic-plugin.so.unload
$ sudo mv /usr/lib/firefox/plugins/libtotem-complex-plugin.so /usr/lib/firefox/plugins/libtotem-complex-plugin.so.unload

Se tutto va a buon fine, al prossimo riavvio Firefox non dovrebbe essere più in grado di rilevarle. Potete comunque effettuare l'operazione inversa in questo modo:

$ sudo mv /usr/lib/firefox/plugins/libtotem-basic-plugin.so.unload /usr/lib/firefox/plugins/libtotem-basic-plugin.so
$ sudo mv /usr/lib/firefox/plugins/libtotem-complex-plugin.so.unload /usr/lib/firefox/plugins/libtotem-complex-plugin.so

Potete allo stesso modo agire su Windows, nel percorso %WINDIR%/../Pr[TAB], dove [TAB] consiste nella pressione del tasto che genera la tabulazione, affinchè il prompt attivi il completamento automatico: se il vostro sistema è in italiano, vi dovrebbe apparire Programmi, altrimenti se è in inglese comparirà Program Files.

Per quei plugins di cui invece non potete fare a meno, MozillaZine segnala qualche trick che vi potrebbe aiutare. Riassumendo:

  • Adobe Reader

    Il consiglio è quello di impostare l'apertura dei file .pdf con un programma che non sia il lettore Adobe:

    Preferenze » Contenuti » Tipi di file » Gestione... » PDF » Cambia azione...

  • Flash

    Poichè Flash 8.x sembra avere un bug per cui quando viene invocato in una pagina dove è presente un filmato continua ad utilizzare memoria fino a che non viene chiusa la scheda, gli sviluppatori consigliano di aggiornare l'applicazione alla versione più recente, ovvero la 9.x.

    Se posso permettermi a tal proposito, ho notato che molti portali includono pubblicità sotto forma di file Flash che rallenta di molto il processo di rendering e soprattutto la navigazione. Io ho aggirato il problema installando un'estensione che offusca questo tipo di files automaticamente, permettendomi tuttavia di riprodurli se lo desidero. L'addon in questione si chiama FlashBlock.

Configurazione

Alcuni accorgimenti a livello di configurazione potrebbero ridurre lo sforzo del browser e abituarlo a ritmi diversi da quelli normali. Vediamo come:

  • Cronologia downloads

    MozillaZine recita:

    L'utilizzo di memoria può aumentare e Firefox può lamentare rallentamenti o bloccarsi se la cronologia dei file scaricati si accumula. Per aggirare il problema è necessario pulire la cronologia e modificare le impostazioni del browser in questo modo:

    Preferenze » Privacy » Cronologia file scaricati » Rimuovi i files dalla finestra Download » Solo se il download ha successo

    A volte per fare questo è necessario chiudere l'applicazione e cancellare manualmente il file downloads.rdf dalla cartella del proprio profilo.

    La versione di Firefox che sto attualmente utilizzando è la 2.0.0.2: lo spezzone di testo sopra tradotto evidentemente si riferisce ad un rilascio precedente, perchè la mia finestra delle impostazioni è strutturata in maniera differente.

    Comunque, quel che mi sono limitato a fare è stato:

    Preferenze » Privacy » Cronologia » Ricorda i file scaricati (Togliere la spunta)

  • Cronologia pagine

    Nonostante abbia letto ben poco in proposito, sono convinto che ridurre il numero di giorni in cui avviene il monitoraggio delle pagine visitate possa aiutare ulteriormente nell'ottimizzazione:

    Preferenze » Privacy » Cronologia » Ricorda le pagine visitate negli ultimi tot giorni

    Io ho deciso di portarli da 10 a 5, visto che uso poco questa funzione per la mia navigazione in rete.

  • Cache

    Sull'utilizzo della cache c'è molto da dire: Firefox tiene le pagine in memoria affinchè il tempo di caricamento risulti inferiore le volte successive. Stando a quando consigliano gli sviluppatori, coloro che hanno problemi nel consumo di memoria dovrebbero disattivare questo comportamento, mentre i restanti potrebbero limitarsi a ridurre l'attività di caching. Vediamo come fare andando a toccare la configurazione in about:config.

    browser.cache.memory.enable

    Quando viene caricata una pagina, essa può essere temporaneamente tenuta in memoria in modo tale che non ci sia bisogno di renderizzarla nuovamente. Questa impostazione usa memoria per immagazzinare immagini decodificate, chrome e pagine sicure (HTTPS).

    Impostando questa proprietà a false, l'applicazione non terrà in memoria gli elementi sopra descritti:

    Ciò implica un minor uso di memoria utilizzata, ma al tempo stesso aumenta il tempo di caricamento per pagine e finestre di dialogo precedentemente visitate, specialmente sui siti protetti.

    A meno che la situazione non sia drastica, è consigliato mantenere a true questa impostazione. Qualora sia attiva l'opzione browser.cache.disk_cache_ssl, le pagine protette verranno memorizzate sul disco, e non più nella memoria cache.

    browser.cache.memory.capacity

    Questa impostazione controlla l'ammontare massimo di memoria da utilizzare per gli elementi tenuti in cache (vedi sopra).

    Questo passaggio lo trovo particolarmente importante ai fini di un buon miglioramento nelle prestazioni. Su MozillaZine trovate una tabella con i valori numerici consigliati in base alla memoria fisica disponibile. Io ad esempio avevo impostato come predefinito ~65MB, quando poi ho scoperto che per 1GB di memoria RAM ne bastavano ~18MB. Quindi, controllate, e se possibile modificate.

    browser.sessionhistory.max_total_viewers

    Le pagine che sono state visitate recentemente sono memorizzate in memoria in modo tale che non ci sia bisogno di ri-analizzarle (Definizione di parsing. Nota: E' diverso dal concetto di caching). Ciò migliora le prestazioni quando si utilizzano i tasti Indietro e Avanti.

    Anche in questo caso è disponibile una tabella congeniata in base alla memoria fisica disponibile.

    browser.sessionhistory.max_entries

    Il numero massimo di pagine memorizzate nella sessione del browser, in particolare nella cronologia. Ad esempio, il massimo numero di URLs rintracciabili tramite i tasti Indietro e Avanti.

    Il valore predefinito è 50 ma, come suggerito da A2Z, è possibile portalo a 5, se non a 0. Io personalmente non utilizzo molto la cronologia orizzontale, per cui ho modificato il valore.

Accorgimenti per Windows

Un piccolo discorso a parte va fatto per questo sistema operativo.

config.trim_on_minimize infatti è un'impostazione studiata per esso affinchè l'applicazione possa ridurre ulteriormente il consumo di memoria.

Sui sistemi operativi Windows, quando un programma è ridotto ad icona per un certo periodo di tempo, il sistema reclama la memoria che il programma ha utilizzato perchè potrebbe essere richiesta da altre applicazioni. A causa del modo in cui il browser Mozilla è tenuto in memoria, Windows tende ad essere più aggressivo nei suoi confronti, e questo può causare rallentamenti (un ritardo) quando il programma è massimizzato nuovamente. Questa impostazione determina se Windows può o non può richiedere memoria da un'applicazione Mozilla.

I valori possibili sono i due booleani true e false. Probabilmente l'opzione non è presente di default in about:config, pertanto è necessario crearla al momento.

Infine, viene spiegato che si possono avere problemi anche quando la memoria virtuale è disabilitata, o il file di paging è troppo piccolo. Segnalo in questo senso qualche altro piccolo accorgimento (ancora una volta, usare con cautela le informazioni sottostanti):

  • Windows 98 & Windows ME

    E' possibile gestire l'utilizzo della memoria virtuale andando a modificare (o aggiungere) i valori MinFileCache e MaxFileCache nella sezione [vcache] in SYSTEM.INI. In base alla memoria fisica utilizzabile, tuttavia, questo potrebbe peggiorare le prestazioni del sistema.

    • Per sistemi con più di 128MB di RAM, è consigliato impostare un massimo di VCache pari a circa il 70% di RAM totale.
    • Per sistemi con più di 512MB di RAM, è consigliato impostare un massimo di VCache pari a circa 524.288KB.
    • Per sistemi con più di 1GB di RAM, è consigliato impostare MaxPhysPage a 40000 nella sezione [386enh] in SYSTEM.INI, specialmente in seguito a problemi di reboot indesiderato. Questo perchè Windows 98/ME limita la VCache ad un massimo di 800MB: il rimedio descritto impone l'accesso ad un massimo di RAM pari a 1GB; a valori superiori il sistema potrebbe infatti diventare instabile.
  • Windows XP

    Su Windows XP la memoria virtuale è gestita da un file chiamato pagefile.sys (vedi swap), che in genere risiede in %SYSTEMDRIVE%. E' possibile cambiarne le dimensioni e la collocazione in questo modo:

    Pannello di controllo » Sistema » Avanzate » Prestazioni » Impostazioni » Avanzate

    In generale è consigliabile mantenere le impostazioni di base, ma vediamo cosa potrebbe aiutarci.

    Innanzi tutto, se si possiede un secondo volume fisico è consigliabile spostare lì il file di paging per una questione di testine (vedi anche la rispettiva voce inglese). Tuttavia, se è disponibile una quantità di RAM molto alta (l'autore la definisce moderna), allora è consigliabile mantenere un ammontare minimo di spazio sul primo volume (da un minimo di 2MB ad un massimo di 50 MB): in caso contrario, il sistema ignorerà le nuove impostazioni disabilitando il paging o posizionandolo nuovamente dov'era originariamente.

    Sui sistemi moderni le regole sottostanti vanno interpretate con cautela, poichè potrebbero essere dannose:

    • Il file dovrebbe avere delle dimensioni fisse, con un minimo ed un massimo che condividano gli stessi valori, in modo tale che non sia frammentato.
    • Il file dovrebbe essere circa 2.5 volte superiore alle dimensioni della memoria fisica (RAM).

    Windows è in grado di regolare i valori minimi e massimi del file in base alle richieste del sistema e dei programmi che ne richiedono l'utilizzo. Maggiore è la quantitò di memoria fisica disponibile, comunque, minore dovrebbe essere la capienza della memoria swap. Non è dannoso impostare dei valori che vadano oltre le reali esigenze dell'OS, ma sarebbe saggio fare delle prove sullo spazio minimo richiesto. Ad esempio, se un valore minimo di 50MB non cresce mai, allora aumentare la memoria RAM non migliorerà le prestazioni del sistema.

Conclusioni

Arrivando fino alla fine avete dimostrato grande coraggio. Mi rendo conto che leggere questa grande dose di informazioni, che bene o male conoscevate già, non è facile... ma vi ringrazio comunque per la fiducia. ;)

Cambiamenti sensibili dell'utilizzo di memoria non vi sono stati in seguito a questi accorgimenti, sebbene abbia potuto constatare un lieve miglioramento nella reattività stessa del sistema. Un buon punto di partenza può essere quello di salvare tutti i dati in un nuovo profilo: questo perchè a volte quelli preesistenti col tempo potrebbero danneggiarsi e causare rallentamenti. Un pò di pulizia quindi non fa male.

Per gli utenti Windows, consiglio l'ottimo MozBackup, mentre per i restanti segnalo l'estensione FEBE, che sembra svolgere altrettanto bene il proprio lavoro.

Grazie ancora per avermi seguito. Sentitevi liberi di contestare le mie affermazioni e correggerle se lo ritenete opportuno, le critiche se ben esposte sono sempre costruttive!

Riferimenti e Approfondimenti

Approfondimenti

L'articolo è stato di tuo gradimento? Puoi controllare che vi sia altro di tuo interesse nella categoria , oppure iscriverti al notiziario RSS e seguirmi su per restare sempre aggiornato sulle ultime pubblicazioni.

Pubblicato venerdì 16 marzo 2007.

Discussione [4]

  1. NoWhereMan aggiunge:

    [Immagine] Segue l'intervento di NoWhereMan

    Ottimo, grazie :)

  2. ExaltedAngel aggiunge:

    [Immagine] Segue l'intervento di ExaltedAngel

    Grandissimo, grazie mille!!

    Exa

  3. Michi aggiunge:

    [Immagine] Segue l'intervento di Michi

    Ottimo, veramente...un'analisi utilissima. Grazie!

  4. programbug aggiunge:

    [Immagine] Segue l'intervento di programbug

    Ho seguito i passi indicati nel sito (http://jayaprakashkv.blogspot.com/2007/02/reduce-memory-consumption-of-firefox.html) e il consumo della memoria si è ridotto da 309MB a 76MB, addirittura avendo 10 schede aperte!!! Fantastico!! Grazie per la guida!!

Discuti

Il blog è in sola lettura.

Paginatura: