19

Chrome znacząco poprawi obsługę rozszerzeń, zmniejszając zużycie pamięci RAM. Na to czekam

Wykorzystanie pamięci RAM przez przeglądarkę to tak naprawdę mocno kontrowersyjny i niejednoznaczny temat. Dość powiedzieć, że nie ma sensu kierować się prostym wskaźnikiem „im mniej zużytej pamięci tym lepiej”. W końcu pamięć RAM jest po to, żeby z niej korzystać. Jest znacznie szybsza niż dysk twardy, mówiąc dokładniej może być nawet 200 razy szybsza niż […]

Wykorzystanie pamięci RAM przez przeglądarkę to tak naprawdę mocno kontrowersyjny i niejednoznaczny temat. Dość powiedzieć, że nie ma sensu kierować się prostym wskaźnikiem „im mniej zużytej pamięci tym lepiej”. W końcu pamięć RAM jest po to, żeby z niej korzystać. Jest znacznie szybsza niż dysk twardy, mówiąc dokładniej może być nawet 200 razy szybsza niż tradycyjny dysk twardy i 40 razy szybsza niż bardzo szybkie dyski SSD. Nie wykorzystać jej w takim razie to grzech. W końcu pusta pamięć sama w sobie nie przynosi żadnych korzyści, poza potencjalną możliwością jej zapełnienia.

Dlatego jeśli przeglądarka, czy dowolny inny program potrafi zapełnić pamięć i ją wykorzystać, to zdecydowanie lepiej, niż gdyby miał sięgać po dane z dysku. Rzecz w tym, że nie wiemy dokładnie czy dany program potrafi korzystać z pamięci efektywnie, czy zwyczajnie ją zapycha, więcej po te dane nie sięgając. O ile sprawa jest względnie prosta przy systemach które posiadają 6, 8 lub więcej gigabajtów pamięci, czyli znacznie więcej niż jeden program 32 bitowy, a większość programów, w tym przeglądarek, jest wciąż 32 bitowa, potrafi zapełnić i wykorzystać (przynajmniej na jeden proces). Mamy nadmiar, więc nie ma problemu. O tyle przy konfiguracjach wyposażonych w 3, 2 a nawet tylko 1 GB pamięci RAM (najnowsze netbooki często mają na stałe wlutowane tylko 1 GB pamięci, np. najnowsze modele Asusa z procesorami Atom N2600 i N2800) sprawa sie jeszcze komplikuje, bo tak małymi zasobami naprawdę trzeba umieć odpowiednio zarządzań i robi to system operacyjny nie konkretny program. Pytanie, ile dany program może wymagać od komputera, żeby w ogóle dało się tym sensownie rozporządzać.

Według zestawienia przygotowanego przez serwis Ghacks, Opera 12 i Firefox 16 najoszczędniej wykorzystują pamięć przy dziesięciu otwartych kartach, natomiast Chrome zużywa go prawie dwa razy więcej. Jak uzasadniam powyżej, nie można na tej podstawie wyciągać zbyt daleko idących wniosków. Tym bardziej, ze zużycie pamięci po wczytaniu 10 kart będzie się różniło od zużycia pamięci w dłuższym czasie, kiedy to wiele zakładek otwieramy i zamykamy nie restartując programu. Mimo wszystko jest szansa, że na komputerach z niedużą ilością pamięci Firefox sprawdzi się lepiej niż Chrome, zwłaszcza po niedawnych optymalizacjach.

Są jednak elementy, które już na pierwszy rzut oka wymagają poprawy, bo z efektywnym wykorzystywaniem pamięci nie mają nic wspólnego. Tak do tej pory było tak i nadal jest z rozszerzeniami w przeglądarce Chrome. Mianowicie, rozszerzenia są uruchamiane wraz z przeglądarką i zajmują pamięć, czy z nich korzystamy, czy też nie. To jest jeden z powodów dla którego unikam korzystania z nich w przeglądarce od Google. Łatwo to sprawdzić otwierając nową zakładkę i wpisując w nią polecenie chrome://memory-redirect/ lub uruchamiając menadżer zadań (Shift + Esc). Każde rozszerzenie zajmuje pamięć, czasem całkiem nie mało, niezależnie czy z niego dzisiaj korzystałeś, czy nie.

Jeśli więc mam rozszerzenie do robienia zrzutu strony w postaci pliku graficznego i korzystam z niego dwa razy w miesiącu, to ono i tak działa cały czas w tle, podczas gdy program, który uruchamiam w tym samym celu działa tylko wtedy, kiedy sobie tego życzę – bezdyskusyjna przewaga. To samo dotyczy rozszerzenia obsługującego Facebooka, które działa nawet wówczas, gdy w żadnej karcie nie jesteśmy doń zalogowani. Moim zdaniem tak nie wygląda dobre zarządzanie pamięcią i tym bardziej podkreśla wadliwa koncepcje przeniesienia wszystkich programów do przeglądarki. To tak jak byśmy uruchamiali system, a wraz z nim każdy możliwy program, który mamy zainstalowany, bez względu na to, czy będziemy z niego korzystać. Nawet jeżeli robimy to raz do roku.

Całe szczęście Google już rozpoczął wprowadzać zmiany w tym zakresie, które można znaleźć w rozwojowej wersji przeglądarki (Chrome Dev), a do stabilnego wydania powinny trafić jeszcze tego lata, tak przynajmniej wynika z oficjalnej zapowiedzi na blogu Chromium. Na czym polegają zmiany? Są proste i logiczne, przynajmniej patrząc od strony użytkownika. Rozszerzenie będzie aktywowane tylko wówczas, gdy będziemy z niego korzystać. Jeśli przejdzie w stan bezczynności, zwolni pamięć RAM którą zajmowało i będzie czekać na kolejny sygnał aktywujący działanie.

Ghacks poinformował, że aby nowa funkcja zaczęła faktycznie działać, konieczne są również zmiany po stronie samych rozszerzeń, więc deweloperzy będą musieli się wziąć do pracy. Zapewne mienie trochę czasu zanim większość rozszerzeń zostanie zaktualizowana pod tym kątem. Kto wie, może po wprowadzeniu tych zmian przekonam się do korzystania z rozszerzeń? :) Tak czy owak, będzie to zmiana zdecydowanie na lepsze.