Ridurre l'utilizzo della memoria di Chrome è una delle priorità principali del team quest'anno. Abbiamo già registrato una riduzione dell'utilizzo della memoria di Gmail fino al 45% grazie ai miglioramenti apportati al processo di garbage collection di V8, ma siamo solo all'inizio. Uno dei nostri prossimi esperimenti sull'uso della memoria è rivolto a chi accumula schede (come me). Si chiama Eliminazione di schede.
L'eliminazione delle schede è disponibile come esperimento in Chrome 46 e versioni successive.
Contesto
Per ogni scheda aperta, il nostro processo del renderer richiede in genere circa 50 MB per scheda, anche se la maggior parte delle persone utilizza una sola scheda alla volta. Se hai 10 schede aperte, avrai speso almeno 450 MB di memoria solo per mantenere lo stato della scheda in background. Con il passare del tempo questo approccio può diventare un po' complesso.
Uno dei nostri obiettivi è ridurre la memoria utilizzata nelle schede che non stai effettivamente utilizzando. Se controllo quali schede consumano la mia memoria di sistema in Task Manager di Chrome, sto semplicemente "utilizzando" uno o due dei siti riportati di seguito, mentre le altre schede in background sono inutilizzate.
È in questo caso che la cancellazione delle schede può aiutarci a ridurre la memoria utilizzata.
Eliminazione delle schede inutilizzate
L'eliminazione delle schede consente a Chrome di eliminare automaticamente le schede non di grande interesse quando rileva che la memoria di sistema è quasi esaurita. Che cosa si intende per "ignoramento"? Una scheda eliminata non può essere applicata. Lo uccidiamo, ma è ancora visibile nella tabstrip di Chrome. Se torni a una scheda che è stata eliminata, questa verrà ricaricata quando viene fatto clic. I contenuti dei moduli, la posizione di scorrimento e così via vengono salvati e ripristinati come durante la navigazione delle schede avanti e indietro.
Abbiamo anche un'altra nuova funzionalità che consente di memorizzare nella cache tutte le risorse delle schede localmente,
che funziona bene anche se le schede vengono ignorate quando sei offline. Quando la scheda viene riattivata, puoi scegliere di ricaricare la versione memorizzata nella cache che era stata precedentemente caricata sulla rete. Per attivare il ricaricamento della pagina dalla cache, puoi
provare un altro esperimento in chrome://flags/#show-saved-copy
.
Puoi provare a ignorare questa scheda oggi stesso attivandola tramite chrome://flags/#enable-tab-discarding
e riavviando Chrome. Puoi
stabilirne l'attivazione o la disattivazione tramite la stessa pagina
chrome://flags
di Chrome.
Una nuova pagina chiamata chrome://discards
ti consente di elencare quali schede sono attualmente aperte e cercheremo di condividere alcune informazioni su quanto siano interessanti (pensiamo) che siano per te, dal più al meno.
Per testare la funzione, puoi eseguire il normale comportamento di navigazione finché il sistema non è in modalità di memoria insufficiente o, in alternativa, attivare un'uscita di scheda da about:discards facendo clic su "Elimina scheda adesso". L'ultima scheda dell'elenco verrà eliminata. Puoi anche eliminare una determinata scheda dall'elenco facendo clic sul pulsante "Elimina" corrispondente. Verrà visualizzata una scheda ignorata con il prefisso [Ignorato].
La scheda ignora le schede ignorate in questo ordine:
- Pagine interne come la pagina Nuova scheda, i preferiti e così via
- Schede selezionate molto tempo fa
- Schede selezionate di recente
- App in esecuzione in una finestra
- Schede bloccate
- La scheda selezionata
Abbiamo attivato l'esperimento di eliminazione delle schede in Chrome Canary per Windows e Mac OS, con un'implementazione Linux presto disponibile.
Ispirazione: ciao bravo reggiseno
Se l'eliminazione delle schede ti sembra familiare, è perché hai probabilmente incontrato utili estensioni di Chrome che offrono una versione leggermente più semplice di questa idea, come The Great Sospendier. The Great Bandwidth ha l'obiettivo di ridurre l'utilizzo della memoria e della GPU di Chrome sospendendo le schede dopo un periodo di inattività personalizzato.
In modo simile all'eliminazione delle schede, la sospensione delle schede può essere annullata quando devi interagire con le schede. Great Placeholder mantiene il titolo e la favicon di ogni scheda, mostrando le schede sospese in uno stato attenuato, rendendo semplice per tornare alla visualizzazione in qualsiasi momento.
Le schede in background che non utilizzo attivamente sono state sospese, risparmiando memoria. Tuttavia, le schede che utilizzo ancora attivamente (GitHub e YouTube) funzionano come di consueto.
Abbiamo avuto un'ottima chiacchierata con l'autore dell'estensione Great appositamentepert
Miglioramenti futuri: il serializzatore delle schede
Il serializzatore delle schede è un lavoro futuro che riteniamo possa portare a miglioramenti significativi nel nostro attuale approccio all'eliminazione delle schede. prende i contenuti di una scheda di Chrome e serializza il suo stato *attuale* in un blob binario. Questo blob binario può essere successivamente deserializzato in una scheda.
Il serializzatore serializzava quasi tutto ciò di cui Chrome, Blink e V8 hanno bisogno per mantenere correttamente una scheda (una cosa che le estensioni di Chrome per affrontare questo problema storicamente non sono state facilmente raggiunte). La serializzazione includerebbe i soliti sospetti: il DOM (con molti WebGL e Canvas inclusi), CSS e lo stato della VM JavaScript V8.
Se usi Android o ChromeOS, saprai che (analogamente all'esperimento sull'eliminazione delle schede trattato in questo post), le schede in background vengono eliminate in modo aggressivo per assicurare che la memoria utilizzata sia ridotta. Il problema era che la scheda perdeva *tutto* il suo stato.
Se hai manifestato di nuovo interesse per la scheda, dovevamo ricaricarla e tutte le tue interazioni con la scheda andrebbero perse. Il serializzatore di schede affronta questo problema in un modo che ti riporta quasi esattamente a ciò che stavi senza dover tornare alla rete. Non vediamo l'ora di condividere maggiori informazioni su questo lavoro in un secondo momento.
Prova a ignorare la scheda e facci sapere cosa ne pensi
Ci piacerebbe sapere se questa funzionalità ti è utile e come potrebbe essere migliorata. Provala, gioca (soprattutto se sei un accaparratore di schede) e facci sapere cosa ne pensi nei commenti. :) Ti saremmo grati anche se aprissi i ticket per eventuali bug riscontrati su crbug.com.