Přeskočit navigaci

Tento blog byl již ukončen. Aktuální novinky ze světa Mozilly nyní hledejte na webu Mozilla.cz.

Firefox a paměť

Řada diskusí o Firefoxu se týká jeho paměťových nároků. Rozhodl jsem se tedy o tom sepsat obsáhlejší příspěvek, který se pokusí shrnout, čím jsou často velké paměťové nároky způsobeny, proč je jeden pozoruje a jiný ne, jak tento problém řešit a jak redukovat paměťové nároky Firefoxu.

Problematická rozšíření

Pomáhal jsem ve fóru podpory řešit problémy řady uživatelů Firefoxu. Stěžovali si, jak jim Firefox běží pomalu, že jim padá, chová se nestadardně apod. V přibližně 90% případů bylo na vině některé z nainstalovaných rozšíření. Pokud tedy přijde člověk do fóra a řekne "navštívil jsem tu a tu stránku a Firefox mi v paměti zabírá xxx MB" a někdo další napíše, že tento problém nepociťuje, dá se téměř jistě říci, že problém je na straně některého z rozšíření. Samozřejmě za předpokladu, že oba používají stejnou verzi Firefoxu.

Rozšíření jsou obecně potencionální problém. Zatímco Firefox vyvíjí řada zkušených vývojářů, každý kus kódu prochází pečlivou revizí, vše se testuje, tvorba rozšíření je většinou "one man show" tj. jeden člověk dělá vše. Díky tomu je kvalita rozšíření různá. Nelze se tedy divit, že řada rozšíření obsahuje memory leaky. Ty se pak chybně přičítají Firefoxu samotnému. Pokud tedy máte pocit, že si Firefox bere hodně paměti, zamyslete se nad nainstalovanými rozšířeními. Patrně bude problém v některém z nich.

S rozšířeními souvisí problém přechodu na novější verzi Firefoxu. Pokud uvedené problémy s pamětí pozorujete po přechodu z Firefoxu 1.0.x na 1.5, doporučuji vytvořit si nový profil a přesunout do něj data ze starého profilu. Firefox 1.5 obsahuje jinou správu rozšíření než Firefox 1.0.x. Některá rozšíření se s tímto přechodem nemusela vyrovnat. Poohlédněte se po novějších verzích těchto rozšíření.

Na základě osobních zkušeností tvrdím, že za většinu zvýšených paměťových nároků mohou nainstalovaná rozšíření tj. produkty třetích stran. Nemusí jít pokaždé o rozšíření, též některé zásuvné moduly mohou být zdrojem problémů. Pokud někdo tvrdí, že s Firefoxem 1.0.x nemá žádný problém a problémy vznikly až s verzí 1.5, s největší pravděpodobností za to opět může některé z rozšíření. Řešení opět spočívá v novém uživatelském profilu.

Aktualizujte

Základní kámen úrazů u memory leaků jsem popsal výše – jsou to rozšíření. Pokud chcete snížit paměťové nároky, používejte vždy poslední verzi Firefoxu. V době psaní tohoto článku je to Firefox 1.5.0.1. S každou novou verzí jsou opraveny chybky související s prací s pamětí. Pokud tedy někdo tvrdí, že Firefox 1.0.x obsahuje méně memory leaků než Firefox 1.5, je to jen jeho optický dojem. Během vývojového cyklu byla řada chyb práce s pamětí odstraněna. Pokud se vám tedy zdá, že si Firefox 1.5 zabírá více paměti než verze 1.0.x, je tu buď způsobeno rozšířeními či funkcemi, které budou popsány níže.

Další rada je tedy zřejmá. Používejte vždy poslední verzi Firefoxu. V hlavní nabídce zvolte Nápověda -> Zkontrolovat aktualizace. Díky rozdílovým aktualizacím ve Firefoxu 1.5 se stáhne jen pár set kilobajtů, když aktualizujete na novější verzi Firefoxu 1.5. Totéž provádějte u rozšíření. Řada autorů v poslední době odstraňuje memory leaky ve svých rozšířeních. Zvolte v nabídce Nástroje – > Správce rozšíření, klepněte na tlačítko Vyhledat aktualizace a proveďte instalaci novějších verzí rozšíření.

Problematická rozšíření jsou AdBlock (přejděte na AdBlock Plus), Fasterfox, Session Saver a řada dalších. Některé jsou opraveny v posledních verzích, jiné ne. Problémem může být též Java. Aktualizujte na nejnovější verzi (nyní 1.5.0_06). Problém je též se staršími verzemi Adobe Acrobat. Aktualizujte na poslední verzi (nyní 7.0.5). Používáte Firefox Preloader? Nedělejte to! Tento program realizuje takové úpravy, které vám mohou paměťové nároky značně zvýšit. Všechny uvedené případy jsou opět problémem rozšíření a zásuvných modulů třetích stran.

Množství zabrané paměti též souvisí s tím, kolik máte v počítači operační paměti (MB RAM). Pokud ji máte hodně, je logické, že si jí Firefox zabere pro svuj rychlejší chod. Pokud jí máte málo, více stránkuje na disk a v paměti je menší část. Takto se chovají všechny programy.

Jak redukovat zabírání paměti

Krom výše uvedených obecných doporučení, které vás zbaví velkých problémů s pamětí, existuje celá řada předvoleb, které vám umožní zredukovat využívání paměti Firefoxem. Většina je konfigurovatelná před konfigurační stránku about:config (Co je about:config?).

Upozornění: Některé z níže uvedených změn mohou zpomalit práci s Firefoxem. Kdykoliv se však můžete vrátit do původního stavu, když vám nebudou provedené změny vyhovovat.

Firefox používá vyrovnávací paměť pro rychlejší načítání vyrovnávací paměť, kam se ukládají obsahy již navštívených stránek. Díky tomu se již navštívené stránky při příštím spuštění načítají rychleji, protože se např. obrázky nemusí stahovat znovu z webu, ale vezmou se z vyrovnávací paměti.

Firefox obsahuje dvě vyrovnávací paměti. Jedna je disková, druhá je přímo v operační paměti. Množství zabrané paměti pro operační vyrovnávací pamět je přimo závislé na její velikosti. Vezme se tedy určité procento z celkové paměti. Pokud tedy máte 512 MB RAM, vezme si Firefox pro tuto pamět méně, než když máte 1 GB RAM. Pokud chcete tuto paměť vypnout, nastavte předvolbu browser.cache.memory.enable na false. Pokud chcete nastavit její velikost na nějakou pevnou hodnotu, přidejte novou předvolbu browser.cache.memory.capacity a nastavte ji na maximální velikost, kterou vyrovnávací paměť může mít (v kilobajtech).

Další možností je redukce funkce rychlého procházení. Firefox 1.5 umožňuje rychlé procházení historie posledních navštívených stránek. Díky ní, když klepnete v prohlížeči na tlačítko Zpět, zobrazí se předchozí stránka prakticky okamžitě. Pěkný příspěvek rozebírající tuto funkci sepsal hlavní vývojář Firefoxu, Ben Goodger. Pro tuto funkci využívá Firefox speciální vyrovnávací paměť, kde si uchovává strukturu navštěvovanách stránek do určité historie.

Na základě toho, kolik máte operační paměti, se ukládá určitý počet stránek. Pokud máte 512 MB RAM, je to 5 stránek, pokud máte 1 GB RAM či více, je to 8 stránek. Pokud funkci rychlého procházení zpět nechcete, nastavte předvolbu browser.sessionhistory.max_total_viewers na hodnotu 0 (výchozí hodnota je -1). Pokud chcete nastavit velikost této historie napevno, zadejte konkrétní číselnou hodnotu.

Výše dva uvedené body tj. vyrovnávací paměť a funkce rychlého procházení jsou hlavní možností, jak redukovat množství zabírané paměti. Existuje však celá řada dalších detailů, které mohou ve využití paměti hrát roli. Mějte rozumnou velikost historie prohlížení. Nadbytečná délka historie zvyšuje paměťové nároky. Délku historie můžete nastavit v sekci Soukromí dialogu Možnosti. Stejná věc se týká i historie stahovaných souborů. Osobně jsem historii stahování zrušil úplně.

Další možností je redukce množství zabrané paměti při minimalizaci všech oken Firefoxu. Toho docílíte přidáním nové logické hodnoty v konfigurační stránce about:config. Vytvořte novou předvolbu config.trim_on_minimize a nastavte její hodnotu na true. Tato předvolba je určena pouze pro Windows.

Co memory leak není

Pokud navštívíte stránku s více obrázky či otevřete náročnější stránku, asi očekáváte, že využití paměti okamžitě klesne při jejím zavření. Tak tomu ovšem nemusí být. To souvisí jednak s výše uvedenými vyrovnávacími paměťmi, druhak se správou paměti operačního systému. Využití může poklesnout i později.

Je tedy Firefox bez chyby?

Pokud jste z předchozího popisu dostaly dojem, že Firefox je bezchybný a neobsahuje memory leaky, není tomu tak. Každý větší software je v menší či větší míře obsahuje. Je to nekonečný běh autorů při psaní kódu, který je nebude generovat.

Tvůrci Firefoxu se objevené memory leaky snaží opravovat a každá novější verze obsahuje další a další opravy. Smyslem tohoto příspěvku bylo vysvětlit, proč si Firefox někdy bere více paměti a co může být příčinou nestandardního využití paměti.

Zajímavé odkazy na toto téma:

Přečtěte si také:

Linkuj si ! asdf.sk

Komentáře

1. Ilja Iljič
Díky za bezvadné a vyčerpávající shrnutí.

2. colos
Jsem z tohoto článku tak trochu na rozpacích. ( jinak ok napsaný )Mozilla vyvíjí FF. Podle mého skvělý soft. A ted kdokoli vytváří rozšíření a lidi si ho instalujou a vznikají problémy a z toho mnoha uživatelům vyjde, že FF "není tak skvělej jak se říká".
A teď se ptám: proč si Mozilla nehlídá neboli netestuje všechna rozšíření a nedává jim např. nějaké požehnání - toto je rozšíření které nesníží kvalitu FF.
To je jako bys dával do Mercedesu dřevěný kola, který nějakej Pepík vymyslel... Vážně to nechápu, navíc přichází již kolikrát řečená myšlenka, proč si nenainstaluju Operu, která má prakticky vše základní ( asi nemá cenu jmenovat ) a je tedy teoreriticky garantována kvalita?

3. JasnaPaka
Počet rozšíření je x set. Není v lidských možnostech, aby je někdo procházel a garantoval kvalitu. Operu nepoužívá řada lidí proto, protože jim nevyhovuje. Je to jednoduché. Každý máme jiné potřeby.

4. colos
Chtěl jsem tím hlavně říct,že právě toto FF škodí a to je škoda. Když se podívám na diskuzi FF, pane jo, to je ale různých problémů. Tím nechci říct, že za vše mohou rozšíření. Máš pravdu "Každý máme jiné potřeby". Já jedu taky hlavně přes FF a musím zaklepat, že až na jeden problém, který mi ovšem žíly netrhá, za ta léta OK.

5. Petrulín
Díky za mnoho cenných rad. Vyřešil jsem přenesením bookmarks i dalšího i problém se zapomenutým hlavním heslem profilu. Resp. jsem tento problém obešel, hesla nepřenesl :)

6. Petrulín
Díky za mnoho cenných rad. Přenesl jsem bookmarks, zbavil se nepohodlných rozšíření, jimiž změněné nastavení FF po jejich odinstalaci sám nenajdu (jsem laik). Obešel jsem tímto i problém se zapomenutým heslem profilu :) FF lítá, paměť nežere (resp. přiměřeně z 1GB, ale to i dříve nebyl problém), zkrátka reborn FF! Ještě jednou díkec.

7. VSkřítek
Díky za vysvětleni hned sem zkusil odinstalovat některá rozlišení až seproblem s pamětí alespon částečně vyřešil ted už je v unosné míře

Přidat komentář

K tomuto příspěvku není možné přidávat další komentáře.