Proč po delší době narůstá použitá paměť u prohlížečů?

molly

Jedna se mi o tuto mozna pro nekoho smesnou otazku, ale zajima me nejaka technicka odpoved. Jde o to, ze jsem vypozoroval, ze je jedno jaky prohlizec pouzivate a jaky system, ale po delsi dobe po spusteni bobtna jeho pouzita pamet i kdyz taby zavirate. Zkusim to vysvetlit. Dejme tomu ze (ted mluvim ciste v teoreticke rovine) samotny prohlizec sezere 300 Mb RAM + otevrete tab ktery sezere 50 Mb RAM a potom ho zavrete > jenze se neuvolni celych 50 Mb RAM, coz by bylo logicke ale treba jen 30 Mb RAM. Po delsi dobe pouzivani tak roste jeho pametova norocnost a to nekdy az do astronomickych vysin (zvlaste pro pocitace s malo  fyzicke pameti a ani to swapovani neni moc reseni, protoze je to pomale). Tedy se stava dobrym mravem cas od casu uplne vypnout prohlizec a spustit ho znovu aby se pamet uvolnila.

Ja se tedy ptam:

1) Ma to nejake opodstaneni (treba ryhlejsi nacitani uz predtim nactenych tabu)?
2) Jestli to opodstatneni nema jak se toho (bezpecne bez omezeni funkci) zbavit (napr. v Chromium)?

Dekuji predem za odpoved ci pripadnou diskuzi na toto tema a preji hezky den.
« Poslední změna: 31. 08. 2016, 09:28:20 od Petr Krčmář »


Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #1 kdy: 30. 08. 2016, 21:44:01 »
Bod 1 plati. Nektere prohlizece treba prednacitaji ocekavane prokliky. Opera byla fajn, ze to slo nastavovat.
Děkuji za možnost editace příspěvku.

Ivan Nový


Kit

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #3 kdy: 30. 08. 2016, 21:47:52 »
Mně to spíš připadá jako memory leaky. Jistě to jsou nějaké zbytečné cache a buffery, které místo zrychlení aplikace ji zdržují.

Ivan Nový

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #4 kdy: 30. 08. 2016, 21:51:58 »
Vypnětě všechna rozšíření, postup pro odhalení memory leaků pro firefox je zde https://support.mozilla.org/en-US/kb/firefox-uses-too-much-memory-ram


Ivan Nový

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #5 kdy: 30. 08. 2016, 21:53:20 »
Ve Firefoxu zkuste tento odkaz about:memory

molly

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #6 kdy: 30. 08. 2016, 22:02:29 »
Diky za odpovedi... O Task Manageru v Chrome a Memory ve Firefoxu samozrejme vim, ale stejne mi to jak tu nekdo psal prijde jako memory leaky. Jde o to, ze at clovek dela, co dela, casem to proste roste. To je tak, kdyz se dnes dela software co nejrychleji, hlavne aby to uz bylo hotove a neslo to prachy misto kvality. Mozna se pletu, ale takoveto chovani deterministickeho programu, ktere se deje vicemene vsem (jak predpokladam) mi prijde podivne.

Ivan Nový

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #7 kdy: 30. 08. 2016, 23:38:59 »
Diky za odpovedi... O Task Manageru v Chrome a Memory ve Firefoxu samozrejme vim, ale stejne mi to jak tu nekdo psal prijde jako memory leaky. Jde o to, ze at clovek dela, co dela, casem to proste roste. To je tak, kdyz se dnes dela software co nejrychleji, hlavne aby to uz bylo hotove a neslo to prachy misto kvality. Mozna se pletu, ale takoveto chovani deterministickeho programu, ktere se deje vicemene vsem (jak predpokladam) mi prijde podivne.
No obecně, když budete přidělovat prostor, který je rozdělený do bloků, bude vám vznikat vnitřní (nevyužitá část přiděleného bloku) a vnější fragmentace (v daném čase neexistuje dostatečně veliký souvislý blok). Tedy paměť, kterou nelze efektivně využít. S rostoucí fragmentací taky rostou tabulky, které k zachycení stavu přidělování používáte. Takže mohou existovat i objektivní příčiny tohoto stavu.

Pako

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #8 kdy: 30. 08. 2016, 23:43:18 »
Považovat web browser který musí být schopný zobrazit webové stránky zprasené na stovky způsobů a emulovat chyby jiných browserů aby každý patlal co "dělá weby" měl co nejmíň práce za "deterministický program"… ehehe. Jasně že jde o prachy, tak ho přece reklamujte a dostanete své peníze v zákonné lhůtě zpátky.

molly

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #9 kdy: 31. 08. 2016, 00:03:29 »
Považovat web browser který musí být schopný zobrazit webové stránky zprasené na stovky způsobů a emulovat chyby jiných browserů aby každý patlal co "dělá weby" měl co nejmíň práce za "deterministický program"… ehehe. Jasně že jde o prachy, tak ho přece reklamujte a dostanete své peníze v zákonné lhůtě zpátky.

Mate urcite pravdu v "zaprasenosti webu" ale nemyslete si, ze nejde o prachy. On ten Google (treba) rozhodne neni charita. On jeste v dnesni dobe jeste nekdo veri v pojem "zadarmo"? Co si treba ten Google nevezme na platbe za svuj prohlizec, to vydela na reklamach a "osobnich datech uzivatelu" > Tohle pochopil uz i Microsoft se svymi Win 10. To je jako hry "free to play" a pak clovek zjisti, ze do toho narval 10k za mesic a stejne nema veskery + obsah, co ta hra nabizi.

Mirek

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #10 kdy: 31. 08. 2016, 07:19:38 »
Považovat web browser který musí být schopný zobrazit webové stránky zprasené na stovky způsobů a emulovat chyby jiných browserů aby každý patlal co "dělá weby" měl co nejmíň práce za "deterministický program"… ehehe. Jasně že jde o prachy, tak ho přece reklamujte a dostanete své peníze v zákonné lhůtě zpátky.
Myslím, že očekávání typu "změřím alokovanou paměť, otevřu nový tab, zadám adresu, načte se stránka, zavřu tab, mám stejně alokované paměti jako na začátku testu" není vůbec přehnané. A to jsem ochotný na konci akceptovat i to, že by se musel spustit GC. Ano, browsery mají funkce typu přednačtení očekávanýc dalších webů, ale takové funkce by měly jít snadno vypnout. A to z mnoha různých důvodů.

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #11 kdy: 31. 08. 2016, 08:18:22 »
Myslím, že očekávání typu "změřím alokovanou paměť, otevřu nový tab, zadám adresu, načte se stránka, zavřu tab, mám stejně alokované paměti jako na začátku testu" není vůbec přehnané.
Takové očekávání není přehnané, je nesmyslné. Proč by prohlížeč dělal takový nesmysl, že by preventivně zahazoval z paměti data, která může vzápětí potřebovat? Z hlediska „spotřeby“ paměti vůbec nemá smysl zabývat se tím, kolik nějaký program využije paměti, když je jí dost – důležité je, co bude dělat, když dost volné paměti není. Tolik paměti přece nemáme v počítačích proto, aby se nepoužívala.

K původnímu dotazu – především je potřeba napsat, co znamená „sežere 50 MB RAM“ nebo „uvolní 30 MB RAM“. V moderním systému je to mnohem komplikovanější, než že je nějaká paměť obsazená programem nebo volná. Operační systém i aplikace mají nějaké strategie alokace a uvolňování paměti, paměť se používá jako cache, může být sdílená mezi procesy… Takže nejprve byste asi měl popsat, jak jste to vlastně měřil, z čehož v lepším případě půjde odvodit, co jste měřil. A pak je teprve možné se bavit o tom, co z toho je způsobené prohlížečem a jestli je to plánované a smysluplné chování.

aaa158

  • ***
  • 239
    • Zobrazit profil
    • E-mail
Re:Proč po delší době narůstá použitá paměť u prohlížečů?
« Odpověď #12 kdy: 31. 08. 2016, 10:06:25 »
Tuto otazku som vyriesil ;-) takto:

Kód: [Vybrat]
$ crontab -l
@daily                     export DISPLAY=:0; WID=`xdotool search "Mozilla Firefox" | head -1`; [ "$WID" != "" ] && { xdotool windowactivate --sync $WID && xdotool key --clearmodifiers ctrl+q; }
@daily                     export DISPLAY=:0; WID=`xdotool search "Mozilla Thunderbird" | head -1`; [ "$WID" != "" ] && { xdotool windowactivate --sync $WID && xdotool key --clearmodifiers ctrl+q; }
   0   7    *   *  Mon-Fri pgrep firefox || DISPLAY=:0 firefox &
   0   7    *   *  Mon-Fri pgrep thunderbird || DISPLAY=:0 thunderbird &

Vdaka tejto Garbage Collection sa uz narokmi na pamat nezaoberam (v minulosti sa mi stavalo ze PC zacalo swapovat jak diva svina... 12GB RAM...)

Kit

Re:Proc po delsi dobe narusta pouzita pamet u prohlizecu?
« Odpověď #13 kdy: 31. 08. 2016, 10:27:53 »
Myslím, že očekávání typu "změřím alokovanou paměť, otevřu nový tab, zadám adresu, načte se stránka, zavřu tab, mám stejně alokované paměti jako na začátku testu" není vůbec přehnané.
Takové očekávání není přehnané, je nesmyslné. Proč by prohlížeč dělal takový nesmysl, že by preventivně zahazoval z paměti data, která může vzápětí potřebovat? Z hlediska „spotřeby“ paměti vůbec nemá smysl zabývat se tím, kolik nějaký program využije paměti, když je jí dost – důležité je, co bude dělat, když dost volné paměti není. Tolik paměti přece nemáme v počítačích proto, aby se nepoužívala.

K původnímu dotazu – především je potřeba napsat, co znamená „sežere 50 MB RAM“ nebo „uvolní 30 MB RAM“. V moderním systému je to mnohem komplikovanější, než že je nějaká paměť obsazená programem nebo volná. Operační systém i aplikace mají nějaké strategie alokace a uvolňování paměti, paměť se používá jako cache, může být sdílená mezi procesy… Takže nejprve byste asi měl popsat, jak jste to vlastně měřil, z čehož v lepším případě půjde odvodit, co jste měřil. A pak je teprve možné se bavit o tom, co z toho je způsobené prohlížečem a jestli je to plánované a smysluplné chování.

Předpokládám, že původní záměr všech keší je zvýšit výkon využitím všech dostupných prostředků. Proč výkon tak brutálně klesne, když jsou ty prostředky zahlceny? Prohlížeč by sám měl některé z nich uvolnit, aby opět došlo k vyvážení výkonu. Místo toho je uživatel nucen ten prohlížeč restartovat.

Cek

Re:Proč po delší době narůstá použitá paměť u prohlížečů?
« Odpověď #14 kdy: 31. 08. 2016, 11:06:07 »
No, myslim, ze tady to není zrovna reprezentativni vzorek populace :-)
Obavam se, ze optimalizovanim pro 50 tabu pustenych minimalne mesic se bude málokdo zabývat, když bezne pouzivani prohlizece je, rekneme, do 10 tabu a pustene v radu hodin.