Gość (37.30.*.*)
Większość z nas zna to uczucie: otwierasz kilka kart, chcesz odpisać na maila, a litery pojawiają się na ekranie z kilkusekundowym opóźnieniem. Choć dzisiejsze komputery mają więcej mocy obliczeniowej niż maszyny, które wysłały ludzi na Księżyc, nowoczesne przeglądarki potrafią rzucić na kolana nawet solidny sprzęt. Ta "walka z wiatrakami" nie wynika jednak ze złośliwości programistów, ale ze sposobu, w jaki ewoluował internet i same aplikacje, których używamy do jego przeglądania.
Kiedyś przeglądarki działały jako jeden proces. Jeśli jedna strona się zawiesiła, "padał" cały program. Aby temu zapobiec, nowoczesne przeglądarki (takie jak Chrome, Edge czy Firefox) stosują architekturę wieloprocesową. Oznacza to, że każda karta, każda wtyczka i każdy element interfejsu działają jako oddzielny proces w systemie operacyjnym.
To rozwiązanie zapewnia bezpieczeństwo i stabilność (tzw. sandboxing), ale ma swoją cenę – ogromne zużycie pamięci RAM. Każdy taki proces musi załadować własny zestaw bibliotek i silnik renderujący. Przy kilku otwartych kartach Twój komputer musi zarządzać dziesiątkami mikro-aplikacji jednocześnie, co przy mniejszej ilości pamięci operacyjnej prowadzi do "zadyszki" systemu.
Opóźnienia podczas wpisywania tekstu (tzw. input lag) to jeden z najbardziej irytujących objawów przeciążenia przeglądarki. Wynika to zazwyczaj z faktu, że główny wątek (Main Thread) przeglądarki jest zbyt zajęty, by obsłużyć Twoje polecenia z klawiatury.
Współczesne strony internetowe to nie tylko tekst i obrazki, ale skomplikowane aplikacje wypełnione skryptami JavaScript. Gdy strona w tle wykonuje ciężkie obliczenia, analizuje dane śledzące lub renderuje animacje, procesor zostaje w pełni obciążony. Przeglądarka musi wtedy "kolejkować" Twoje naciśnięcia klawiszy. Dopiero gdy skrypt skończy swoją pracę, system "wypycha" zgromadzone w buforze znaki na ekran – często gubiąc niektóre z nich po drodze, jeśli bufor zostanie przepełniony.
Zauważenie, że po zamknięciu jednej karty lub procesu zużycie zasobów przez pozostałe procesy wzrasta, wydaje się nielogiczne, ale ma swoje techniczne uzasadnienie. Istnieje kilka powodów tego zjawiska:
Gdy zamykasz kartę, przeglądarka musi posprzątać po niej w pamięci RAM. Proces ten nazywa się Garbage Collection. Paradoksalnie, samo sprzątanie wymaga cykli procesora i chwilowego zwiększenia aktywności pozostałych procesów zarządzających, aby poprawnie zwolnić adresy w pamięci i zreorganizować dane.
Wiele procesów przeglądarki korzysta ze wspólnych zasobów (np. bibliotek graficznych czy silnika JavaScript). Kiedy jeden proces zostaje zamknięty, system operacyjny lub sama przeglądarka mogą dokonać relokacji danych. Jeśli system wcześniej "swapował" (przenosił na dysk) dane innych kart z powodu braku miejsca, to po zamknięciu jednej karty może próbować wczytać dane pozostałych z powrotem do szybkiej pamięci RAM, co objawia się nagłym skokiem aktywności.
Nowoczesne przeglądarki często "zamrażają" nieaktywne karty. Gdy zamkniesz jedną z nich, przeglądarka może uznać, że ma teraz dość zasobów, by "wybudzić" inną kartę działającą w tle (np. aby odświeżyć na niej dane). To wybudzanie generuje nagłe obciążenie procesora i wzrost użycia pamięci przez procesy, które do tej pory były w stanie spoczynku.
Choć nie da się całkowicie wyeliminować apetytu przeglądarek na zasoby, można go nieco ograniczyć:
Warto pamiętać, że dzisiejszy internet to środowisko bardzo wymagające. Strona, która wygląda na prosty artykuł, często uruchamia w tle dziesiątki skryptów reklamowych i analitycznych, które obciążają Twój sprzęt bardziej niż sama treść, którą czytasz.
Często martwimy się, widząc, że przeglądarka zajmuje 80% pamięci RAM. W informatyce istnieje jednak zasada: "RAM nieużywany to RAM zmarnowany". Przeglądarki często celowo zajmują więcej pamięci, niż potrzebują w danej sekundzie, aby przechowywać w niej wstępnie wyrenderowane elementy stron, które możesz odwiedzić za chwilę. Robią to po to, by nawigacja wydawała się płynniejsza – o ile oczywiście Twój komputer ma wystarczający zapas mocy. Problemy zaczynają się dopiero wtedy, gdy ta rezerwacja zaczyna rywalizować z krytycznymi procesami systemu operacyjnego.