HTML

Tiszta szoftver, rendes ház

Szabad világ, szabad gondoltak, szabad szoftverek, nyílt szabványok

Friss topikok

Linkblog

Az előző rész tartalmából

A Firefox 4 megjelenésével felerősödtek azok a kritikák, amelyek a böngésző memóriaéhségére panaszkodnak. Nem csoda, a Firefox 4 hosszas fejlesztése nyomán számos új funkció került a programba, amelyek önmagában is méretnövekedést okoznának. De úgy tűnik ennél azért többről van szó. A Firefox 4 ugyanis nem szabadítja fel kellő hatékonysággal a memóriát – és ez bizony elhízásra hajlamosít.
Mint az köztudott, a Mozilla termékek apraja és nagyja a felhasználói felület meghatározására a XUL leírónyelvet használja. Ennek fontos eleme, hogy a megvalósítás alappillére a JavaScript nyelv. A JavaScript feldolgozása az évek folyamán sokat gyorsult a SpiderMonkey C és C++ nyelven implementált JavaScript motorban. Ez elsősorban a TraceMonkey és a JägerMonkey JIT (Just-in-Time) fordítók megjelenésének köszönhető. A jövő pedig az IonMonkey fordító, de ennek a témának a kifejtése egy másik cikkre vár.

A Firefox számos újdonsága között megbújt az a tény, hogy a Firefox négyes verziójában a JavaScript memóriakezelését alaposán megreformálták. Dr. Andreas Gal hosszú blogbejegyzésben taglalja a részleteket:
„Jelentősen megváltoztattuk a JavaScript objektumok kezelését a Firefoxban. JavaScript objektum alatt érthetünk a scriptek által kezelt objektumokat, úgy mint tömböket és dátum objektumokat, de ide tartoznak a Dokumentum Objektum Modell (DOM) elemek is, úgy mint a beviteli mezők, vagy éppen a DIV elemek.
Régen a Firefox az összes JavaScript objektumot egy tárolóba helyezte el. Ezen a halmon végzett szemétgyűjtést (GC – Garbage Colletion) úgy, hogy a böngésző az összes objektumot ellenőrizte. A már elavult objektumokat törölte a program és az üres helyet felszabadította.


[…]
A Firefox 4-ben a JavaScript objektumok kezelés megváltozott. Az általunk fejlesztett JavaScript motor, a SpiderMonkey, most már támogatja a több halom használatát, amelyet rekeszeknek is nevezhetünk. Minden objektum meghatározható helyhez tartozik, így mindegyik helyhez hozzárendelhetünk egy saját rekeszt.„
Ez a megközelítés számos előnnyel jár, kezdve a biztonsági megfontolásoktól egészen a memóriakezelésre gyakorolt jótékony hátásáig. Például a weboldalak egymás objektumához való  hozzáférést csak a biztonságos és felügyelt átirányítóval (wrapper) lehet igénybe venni.

Lesz még jobb is

Abban az esetben, ha memóriakezelés megvalósítása tökéletes, a megoldás számos előny mellett csak minimális memóriatöbblettel jár. Noha a megoldás jó volt, a memóriafoglalás bizonyos esetekben szerencsétlenül alakult. Ennek tudható be, hogy a böngésző nem volt képes felszabadítani az összes memóriát.
A MemShrink projekt pont két hónapja alakult, s célja elsősorban az ehhez hasonló hibás memóriamenedzsmentből fakadó problémák feltárása és javítása.
A Firefox 7-ben már 20-30% memóriamegtakarítás biztosan látható lesz, de intenzív használat mellett akár még 50% feletti eredmény is nem elképzelhetetlen. Például a Legit Reviews szaklap „Our Test Shows Firefox 7 Aurora Uses Nearly 40 Percent Less Memory” cikkében 40 százalék csökkenésről számolt be: „a Firefox 5.0 memóriaigénye: 1 286 916 Kb, a Firefox 7.0 memóriaigénye: 776 392 Kb; 117 lap könyvjelzőből történő megnyitásakor.”

Hogy lehetséges ez?

A fejlesztések egyik iránya, hogy a rendszer számára külön rekeszt rendeltek a fejlesztők, így elkerülhető az a probléma, hogy a weblap bezárása után a weblap rekeszét „blokkolja” egy – a rendszerhez tartozó objektum. Ez akár több megabyte-nyi területet is jelenthet megnyitott webhelyenként. A tesztek tanúbizonysága szerint erre igen nagy az esély. A javítást már tartalmazza a héten Béta fázisba lépő Firefox böngésző 7-es verziója. (blog, 666058)
Egy gyors statisztika egy rövidke böngészési munkamenet után bezárt lapoknál:
108,003,328 B — js-gc-heap (javítás nélkül)
20,971,520 B — js-gc-heap (javítással)
A böngésző teljes memóriahasználata:
310,890,496 B — resident (without patch)
219,856,896 B — resident (with patch)
Ehhez a fejlesztéshez kapcsolódnak a Firefox memóriahasználatát jelentő oldal a „about:memory” fejlesztései is, amelyben a rekeszek memóriahasználata immáron külön-külön kerül kijelzésre, akárcsak a rendszer által használt rekeszek memóriaigénye. Egyre részletesebb eredményt is kapunk a különféle alrendszerek memóriahasználatáról, s csökken az azonosítatlan memóriafoglalás (heap-unclassified) is.
Ezzel kapcsolatban a tapasztaltabb – Nightly verzió használatától sem visszariadó – felhasználók zombivadászatra invitálja a MemShrink projekt vezető fejlesztője. A vadászat már elkezdődött, de sohasem késő kapcsolódni.
Visszatérve a memóriahasználatra, még meg kell említeni a hibás, kettő hatványainál éppen hogy nagyobb memóriafoglalást is, amely alapból közel 50%-nyi felesleges memóriát foglal az objektumoknak, bizonyos esetekben. A JavaScript karakterlánc-kezelése, a JS és PL arena allocator memóriakezelése, valamint a SQLite hibás memóriaigény jelzése is ilyen hibáktól volt terhelt.
Eközben a Web Workers új implementációja, az URL-kezelő (650649), az AUDIO és VIDEO tagekben megadott médiatartalom lejátszása is kevesebb memóriát igényel, s a böngésző jobban skálázódik a vetélytársaknál, sok lap megjelenítése esetén.
A JavaScript esetén komoly szerepe van a már említett szemétgyűjtésnek, így kisebb rekeszek ellenőrzése külön-külön gyorsabban lezajlik, ráadásul az objektumokat lezáró szál most már a háttérben fut le. A Firefox 6-tól kezdve a szemétgyűjtés sűrűbben megtörténik, mert nem csak a jelentős méretnövekedés válthatja ki a szemétgyűjtést, hanem állandó időközönként le fog futni ez a funkció (656120).

Ez még csak a kezdet

Ezek a fejlesztések együttesen adják a héten Béta fázisba kerülő Mozilla Firefox 7 memóriaigényének csökkenését. A csökkenés mértéke minimum 20%-30%, de a gyakorlat szerint ennél még nagyobb. A gyors fejlesztési ütemterv és a hatékonyan működő MemShrink munkacsoportnak hála 8 hét alatt számottevő javulás látható a memóriahasználat területén. Szerencsére a történet folytatódik, s a Firefox 8-ban további fejlődésnek lehetünk szemtanúi.

29 komment

A bejegyzés trackback címe:

http://tisztaszoftver.blog.hu/api/trackback/id/tr283153121

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

spontan · http://erdekessegek.info 2011.08.18. 10:43:15

Érdemes áttérni inkább a Chrome-ra, amit a Google elég jól fejlesztget.

anyádbogár · http://www.apadhuzzonafaszara.com 2011.08.18. 11:30:57

hát ja, pont a firefox "memóriaigénye" okán lettem én is inkább-alapon chrome-használó. és mi tagadás, annyira elkényeztetett a chrome, hogy nem fogok többé firefox-ot használni...

Picsasereghajtó 2011.08.18. 11:33:51

Engem különösképpen nem izgat, hogy a 4 giga RAM-ból a Firefox 500, vagy 200 megát eszik meg. Legyen gyors, más nem számít.

C4rt3r 2011.08.18. 11:38:25

Én sem értem, hogy mire jó ez a memóriacirkusz. 1,2 giga, vagy 775 mega, hát nem teljesen mindegy 117 megnyitott lapnál? Aki ennyi lapot megnyit az úgyis csak tesztelő lehet.

Engem inkább az zavar, hogy az elindulása olyan lassú, azon javítsanak inkább. Lehet példát venni a chrome-tól. (Bár az meg belassult) :(

efes · http://efesasanisimasa.wordpress.com/ 2011.08.18. 11:40:59

mi az az idegesítő loading1.widdit.com oldal, ami igen sokáig tölt be (firefoxban és chromeban egyaránt)? nem vírus, hanem valami felhasználóiélmény-javító fasság. hogy lehet kiiktatni?

Online Távmunkás · http://onlinetavmunka.blog.hu 2011.08.18. 11:43:29

Nem a Firefox 4-től erősödtek fel a memóriazabálási kritikák, hanem már a Firefox 3-tól. Elvileg már a Firefox 4-5-6 is jelentősen csökkentette a memóriaigényt, de ebből felhasználóként keveset érzékelek. 2-3 nyitott lap mellett simán megeszi az összes memória 15-20%-át Windows alatt.

Überspannung 2011.08.18. 11:57:48

netbookon 512megával a 4-es kurvaszar, állandóan belassul, a 3-as viszont kibaszott gyors, vissza is tértem a 3-asra. A 4-esnek csak 1-2 értelmes funkciója van, amivel többet nyújtana a 3-asnál.
A tanulság az, hogy egyre szarabbak a szoftverek, amit régen 1MB alatt meg tudtak oldani, ahhoz ma többszáz MB kell. A szoftvertechnológiák nem fejlődnek, hanem csak változnak és bővülnek. Amihez korábban 2 absztrakciós szint volt, ahhoz ma 20 van, így nem csoda hogy értelmetlenül sok memória kell és minden egyre lassabb.

Allin(HUN)Gary 2011.08.18. 12:17:19

Én a 3.6 alatt lettem chrome felhasználó. Aztán a 4-el visszaerőszakoltam magam... de szenvedtem mint a kutya, az 5-össel már jobb volt, de megérte, mert tegnap óta a 6-os az mindent visz. Ilyen jó böngészőm még nem volt.
Sokat használom az IE addont és minden tökéletes benne. gyorsabb mint a IE... :)
Én tényleg csak ajánlani tudom.

Pistike_ 2011.08.18. 13:03:41

A firefox elég retek utat választott, akik kedvelik azokat is elég jól sikerül lepattintani ...

A chrome-fanoknak viszont ajánlom az SRWARE IRON-t, annak az oldalán csodálatosan le van írva, hogy a kedves böngészőtök éppen csak azt nem küldi el a google-nak, hogy mikor mentek fingani ...

nevetőharmadik 2011.08.18. 13:15:39

FF 3-4 alatt én is átszoktam a Chrome-ra, az 5-ös Firefox már használható és most is azt nyúzom, mert néhány addonját nagyon szeretem, de ha gyengébb gépen vagyok, csak a Chrome megy elfogadható sebességgel.

nevetőharmadik 2011.08.18. 13:16:59

@Pistike_: Én hangosakat fingok, az én Chrome-om meghallja :D

manmachine · http://nagykrisztian.com 2011.08.18. 13:18:45

Mostanában én is chrome-t részesítem előnyben (ubu+win), főleg a HTML5 gyakorlások közepette. De az automata url kiegszítő szolgáltatásától agybajt kapok. A firefoxban ez egyszerűen jobb.

becsoccsent 2011.08.18. 13:22:51

1.3 megat foglal 71 meg 81 megnyitott lap is. ha ez a 6.0-s mondjuk tizedannyit omlik 1xx megnyitott lapnal, mint az otos vagy a negyes, akkor nem valtok sehova.

spontan · http://erdekessegek.info 2011.08.18. 13:25:15

@Pistike_: de nem azt küldi el pl., hogy Kovács József böngészője összeomlott, hanem hogy az anonim 1234 user böngészője összeomlott

Nem az érdekli őket, hogy te személy szerint mit csinálsz, hanem ezekkel az anonimizált infókkal tudják fejleszteni, javítani a böngészőt.

Amúgy én Operát használok, úgyhogy engem egyik fenti böngésző sem érint, de ezzel felesleges ijesztgetni, hogy a Chrome kémkedik utánad.

Uzi 2011.08.18. 14:10:33

Firefox-ot akkor használok, ha a rendszerproxy-tól eltérő proxy-t kell konfigurálnom (pl. ssh tunnelhez). Ebben még mindig a Firefox a király. (Remote DNS megoldást sem tudja az IE vagy Chrome tudtommal)

Mészáros Laci 2011.08.18. 14:14:03

Én azt tapasztalom, hogy az Auróra ugyanúgy zabálja a memóriát, ráadásul hiába csukom be a nyitott füleket, a memóriahasználata alig változik.

twollah / bRoKEn hOPe, sUppLeX · http://freewaresoftwarenews.blogspot.com/ 2011.08.18. 14:25:20

Lassan mar 4 giga az alap memoria mennyiseg a gepekben.
Ha ebbol megeszik a FF fel gigat azt eszre se venni.

Kelemenn 2011.08.18. 14:29:22

majdnem 1 napja van fent a 6-os Firefox, de ugyanúgy omlik össze, mint a 4-es, meg az 5-ös.
Szóval nagy értelme nincs ennyire dobálózni a verziószámokkal...

KAMI 2011.08.18. 14:41:30

@C4rt3r: Fejlesztések vannak a indulás gyorsításával kapcsolatban is. Például a 6-os verzióban landolt a Panoramával kapcsolatos optimalizációk.

@C4rt3r: 50 lapot - simán el tudok érni. Általában dokumentáció böngészése vagy hibajavítás közepette, amikor sorra "jönnek szembe" az érdekes linkek - amit majd meg kellene nézni.

@online távmunkás: A négyes verziónál lett rosszabb lett a helyzet, vélhetően az új funkciók bevezetése által. Persze más dolgok - JavaScript sebességnövekedése - ellensúlyozták ezeket a dolgokat. Ebből a szempontból a hamarosan bétaként elérhető 7-es verzió lesz jó, amelyről a cikk is szól.

@j'en ai fair any stone: Ha van kedved, és időd, kérlek próbáld ki a Firefox 7-es verzióját. Szerintem elégedett leszel vele. Nem árt esetleg egy másik mappába telepíteni és esetleg egy üres profillal letesztelni. Ha kell segítség, szívesen leírom hogyan is lehetne, akár egy rövidebb bejegyzés formájában is.

KAMI 2011.08.18. 14:48:23

@becsoccsent: a Firefox 6 már megjelent, lehet érdemes lenne frissíteni rá.

@Pistike_: A Firefox nem gyűjt rólad adatokat, csak ha felhatalmazod és az is anonim gyűjtés. A abban az esetben történik, ha:
* összeomlott a böngésző - a hibajelentésből egy publikusan elérhető jelentés és statisztika lesz (kivéve a megadott e-mail cím, ami nem kerül publikálásra)...
* telepíted a (fejlesztés alatt álló) Telemetry kiterjesztést, amely teljesítményadatokat gyűjt a Firefoxról ( a lassan induló vagy futó kiterjesztésekről, ... ).

Hepci · http://gasztrojazz.blogspot.com 2011.08.18. 14:52:27

Amikor tele lett a micsodám a Firefoxszal, áttértem Chrome-ra. Pár ígéretes nap után a FF szintjére lassult. Még később ez is elkezdett összeomlani, illetve az a remek integrált Flash plugin.
B*szhatjuk mindet...

fepe 2011.08.18. 15:13:55

@Pistike_: Ki nem szarja le. Felőlem azt küld el amit akar... Bírom az ilyen paranoiát. Kb 100 millió web oldalt nyitnak meg vele mp-enként. Gizike meg fosik hogy jajj, abból a 100 millióból 0,0001 az őrá vonatkozik és mi lesz most...

Erről a mobiltelefon lehallgatás jut eszembe, amikor X, azért nem telefonált mobillal, mert azt biztos lehallgatják. Na persze, hiszen köztudott hogy 100 ezer embernek napi 24 órában ez a melója ugyebár. Hallgassák csak. :D

becsoccsent 2011.08.18. 15:31:29

@KAMI: az van fent, ma eddig egyszer csuklott meg. most mar szandekosan nyitok ennyi ablakot, megnezem, ez hogy muzsikal. eddig 8 ora alatt egy osszeomlas, egesz jo.

KAMI 2011.08.18. 15:52:17

Itt a Firefox 6, a Thunderbird 6 és a SeaMonkey 2.3 is. Írtam róla egy bejegyzést is: tisztaszoftver.blog.hu/2011/08/18/megjelent_a_mozilla_firefox_6_a_thunderbird_6_es_a_seamonkey_2_3

Online Távmunkás · http://onlinetavmunka.blog.hu 2011.08.18. 16:24:41

@KAMI: Bocs, de nekem már a 3-as verziónál is jelentkezett a folyamatosan növekvő memóriahasználat. Egy-két nyitott lappal is sikerült fél óra alatt száz mega memória felé menni. Mondjuk akkoriban nem igazán volt még hasonlóan használható vetélytársa a FF-nak.

A 4-es verzióban a lassú indulás volt az újdonság ilyen szempontból. Akkoriban azt hittem, nagyon elromlott a FF, amíg meg nem láttam egy ismerősnél, hogy mennyi idő alatt indul el az IE 7. Akkor már tudtam, hogy ez a divat :)

Überspannung 2011.08.18. 20:01:12

@KAMI: kipróbáltam a 7-est, igazad volt, köszi. Ezt már nem is Firefoxnak, hanem Aurorának hívják, egész gyors és jó. Talán mégiscsak van jövője a világnak :)

KAMI 2011.08.18. 21:42:23

@online távmunkás: Ha jól működik a böngésző - azaz nem omlik össze, és a bővítmények sem omlasztják össze - akkor az elindulás sebessége nem annyira sokat nyom a latba, véleményem szerint. Ellenben a működési sebesség, a testreszabhatóság, a memóriaigény, a bővíthetőség és a stabilitás fontos tényezők.

KAMI 2011.08.18. 21:46:36

@j'en ai fair any stone: Az Aurora a Firefox kódneve, mielőtt Béta állapotba lépne a termék. Írtam ezzel kapcsolatban egy cikket. Ajánlom figyelmedbe: mozilla.fsf.hu/2011/05/uj-vizeken-a-firefox-aurora/

becsoccsent 2011.10.01. 22:59:55

48 megnyitott lap, 7.0.1, most eppen 5.39 1 058 156 K 1 035 380 K Firefox Mozilla Corporation, vagyis a proci 5%-at viszi, es 1M memoriat eszik. Ez elviselheto, ja, es a hetes ota nem omlott ossze. alakul ez.