Gość (37.30.*.*)
Wiele osób doświadcza frustrującej sytuacji, w której przeglądarka internetowa – mimo otwarcia zaledwie kilku kart – zaczyna „haczyć”, przestaje reagować na polecenia, a ostatecznie po prostu się zamyka. Problem ten dotyczy nie tylko Mozilli Firefox, ale i innych nowoczesnych przeglądarek. Choć intuicja podpowiada nam, że trzy karty nie powinny obciążać komputera, rzeczywistość pod maską programu jest znacznie bardziej skomplikowana. Przyczyną nie jest zazwyczaj sama liczba stron, ale to, co się na nich dzieje oraz sposób, w jaki współczesne silniki przeglądarek zarządzają dostępną pamięcią RAM.
Dawniej przeglądarki działały jako jeden wielki proces. Jeśli jedna strona się zawiesiła, „wywalało” cały program. Aby temu zapobiec, twórcy Mozilli wprowadzili architekturę wieloprocesową (znaną jako Electrolysis lub e10s). Obecnie Firefox dzieli zadania na proces nadrzędny (interfejs), procesy treści (strony WWW), procesy procesora graficznego (GPU) oraz procesy rozszerzeń.
Kiedy zamykasz zasobożerny proces (np. kartę z ciężką grą przeglądarkową lub Facebookiem), system operacyjny zwalnia pamięć RAM. Jednak przeglądarka, widząc nagły przypływ wolnych zasobów, często natychmiast je „zagospodarowuje”. Dzieje się tak, ponieważ nowoczesne silniki JavaScript (takie jak SpiderMonkey w Firefoksie) oraz mechanizmy buforowania dążą do maksymalizacji wydajności. Wolna pamięć RAM to dla przeglądarki „zmarnowana” pamięć. Zamiast zostawić ją pustą, przeglądarka wykorzystuje ją do przechowywania większej ilości danych w pamięci podręcznej, co ma przyspieszyć przełączanie się między pozostałymi kartami.
Cykliczne zawieszanie się przy niewielkiej liczbie kart zazwyczaj nie wynika z braku pamięci, ale z konfliktów na poziomie instrukcji lub błędów w skryptach. Oto najczęstsze powody:
Czy wiesz, że nowoczesne przeglądarki stosują technikę zwaną „speculatively pre-rendering”? Przeglądarka próbuje przewidzieć, w który link klikniesz, i zaczyna go ładować w tle, zanim jeszcze to zrobisz. To sprawia, że internet wydaje się szybszy, ale drastycznie zwiększa zużycie zasobów, nawet jeśli masz otwartą tylko jedną stronę.
Zjawisko, w którym inne procesy natychmiast przejmują zasoby po zamkniętym procesie, wynika z mechanizmu zarządzania priorytetami. System operacyjny (Windows, macOS czy Linux) zawsze stara się utrzymać pewien bufor pamięci. Gdy zamykasz proces zużywający 1 GB RAM, pozostałe procesy Firefoksa, które wcześniej były „tłamszone” przez system, aby nie zabrakło pamięci dla całego komputera, nagle dostają sygnał: „Mamy wolne miejsce!”.
W tym momencie mechanizmy JIT (Just-In-Time compilation) mogą skompilować więcej kodu do pamięci maszynowej, a cache obrazów może zostać rozszerzony, by nie trzeba było ich ponownie pobierać z dysku. To sprawia wrażenie, że zasoby „przeskakują” z jednego miejsca w drugie, podczas gdy w rzeczywistości przeglądarka po prostu optymalizuje swoje działanie pod kątem nowej dostępnej przestrzeni.
Jeśli Twój Firefox regularnie sprawia problemy, możesz to sprawdzić bez instalowania dodatkowych narzędzi:
about:processes. To wewnętrzny menedżer zadań przeglądarki, który pokaże Ci dokładnie, która karta lub które rozszerzenie zużywa najwięcej procesora i pamięci.about:memory i kliknij „Minimize memory usage”. Jeśli przeglądarka nagle zacznie działać płynniej, oznacza to, że problemem jest zarządzanie stertą pamięci (heap).about:crashes, aby zobaczyć raporty o błędach. Często zawierają one informacje o tym, czy przyczyną zamknięcia był błąd sterownika, czy konkretna wtyczka.Zrozumienie, że przeglądarka to dzisiaj niemal osobny system operacyjny działający wewnątrz Twojego komputera, pomaga zaakceptować fakt, że nawet „pusta” strona wykonuje w tle tysiące operacji na sekundę. Kluczem do stabilności jest zazwyczaj higiena rozszerzeń i dbanie o aktualność sterowników graficznych.