Hlavní navigace

Chrome chce šetřit pamětí, bude sám zavírat nepoužívané panely

3. 9. 2015
Doba čtení: 3 minuty

Sdílet

Vývojáři prohlížeče Chrome slyší na stížnosti uživatelů, kteří kritizují velkou paměťovou náročnost při větším množství otevřených panelů. Nové verze tedy přináší řadu změn, která by měla vést k menší konzumaci paměti. Nejnovější počin se jmenuje Tab Discarding a bude uvolňovat paměť nepoužívaných panelů.

Řada uživatelů si u prohlížeče Chrome stěžuje na jeho paměťovou náročnost. Vývojáři potvrzují, že snížení spotřeby paměti je pro ně letos hlavní prioritou. Pomocí vylepšení garbage collectoru se jim už něco ušetřit podařilo, ale jsou prý teprve na začátku.

Dalším krokem by mělo být nasazení techniky nazvané Tab Discarding, která přijde s další verzí Chrome s označením 46. V současné době si vykreslovací jádro pro každý otevřený panel alokuje dalších 50 MB paměti, což při deseti panelech dělá téměř půl gigabajtu, který je používán jen k tomu, aby zůstala stránka na pozadí v paměti.

Víc panelů, víc paměti

Vyhodit nepoužívané

Princip nové funkce spočívá v tom, že z paměti budou vyhozeny stránky, které uživatel dlouho nepoužil. Připomíná to chování Chrome na mobilních platformách a také by k tomu mělo docházet, když začne docházet systémová paměť. Prohlížeč sám zareaguje a část jí uvolní. Podobnou funkcionalitu nabízí například rozšíření The Great Suspender.

Vychází se z toho, že někteří uživatelé mají otevřené desítky panelů, ale reálně pracují na několika málo stránkách. Ty ostatní tak mohou být „uspány“ a vyhozeny z paměti. Tím je možné do systému vrátit stovky megabajtů uvolněné paměti, které jsou k dispozici dalším aplikacím.

Co přesně znamená, že stránka bude vyhozena z paměti? Z uživatelského hlediska bychom to neměli na první pohled zaznamenat, stránka zůstane v seznamu panelů. Pokud na ni uživatel opět přepne, znovu se celá načte a zobrazí.

K načtení nemusí dojít nutně z internetu, součástí vývojové verze Chrome je volba, která umožňuje stránku uložit do lokální cache a načíst ji znovu odtud. Výhodou je, že by to mělo být rychlejší, nemělo by to zatěžovat třeba mobilní připojení a hlavně to bude fungovat i offline. Pokud tedy budete bez připojení, nebudete mít problém se pohybovat po už otevřených panelech.

Aby uživatel kvůli této funkci nepřišel o rozdělanou práci, dojde před vyhozením stránky k uložení jejího stavu. Zachovány by tedy měly být všechny vyplněné formuláře, stav prvků na stránce a pozice na ní. Pokud tedy budete mít na stránce rozečtený článek, po návratu by vám prohlížeč měl ukázat přesně to místo, na kterém jste před hodinou stránku opustili.

Jak to zkusit?

Pokud používáte vývojovou verzi Chrome a chcete si celý experiment vyzkoušet, zapnete ho na chrome://flags/#enable-tab-discarding. Načítání stránek z místní cache je pak v chrome://flags/#show-saved-copy. Pokud funkce zapnete, můžete ještě navštívit stránku chrome://discards, na které je možné sledovat aktuální stav panelů a zjistit, které z nich jsou takto uspané.

Stránky v paměti seřazené podle důležitosti

Stránka také informuje o tom, které otevřené stránky jsou pro vás důležité a které jsou naopak kandidátem na uvolnění z paměti. Ty nejpoužívanější jsou nahoře, naopak stránky vypsané dole budou v případě potřeby uvolněny jako první. Pokud si chcete vše vyzkoušet, můžete tu také manuálně nechat odstranit konkrétní stránky.

Chrome bude automaticky v případě potřeby vyřazovat stránky v tomto pořadí:

  • Interní stránky jako prázdný panel, záložky a podobně
  • Dlouho nepoužité panely
  • Nedávno použité panely
  • Aplikace běžící v okně
  • Připnuté panely
  • Právě otevřený panel

V tuto chvíli je funkce dostupná v Chrome Canary pro Windows a OS X, vývojáři slibují, že linuxová verze přijde také velmi brzy.

CS24_early

Dalším krokem bude „tab serializer“

Vývojáři už také naznačili, co v této oblasti chystají dále. Příštím krokem bude „tab serializer“, což je funkce, která umožní celý stav otevřeného panelu uložit do binárního blobu a poté kdykoliv znovu rozbalit do funkčního panelu. Půjde tedy vlastně o implementaci swapu na úrovni jednotlivých stránek.

Uloženo bude vše potřebné: DOM včetně WebGL a obsahu canvasů, CSS a stav javascriptového jádra. Nemělo by opět dojít ke ztrátě žádné informace v takto odswapovaném panelu, protože bude uložena jeho kompletní podoba. Pokud bude vše fungovat správně, mohlo by docházet k ještě agresivnějšímu uvolňování paměti, protože na uživatele to nebude mít vůbec žádný vliv.

Byl pro vás článek přínosný?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.