Task killery – zło ostateczne

Task killery to aplikacje do czyszczenia pamięci poprzez zatrzymywanie procesów, inaczej mówiąc aplikacji działających w tle. Tak naprawdę ich nie potrzebujemy, a nawet wpływają niekorzystne na nasze urządzenia, ale ze względu na panujący kult „im więcej wolnego RAM-u, tym lepiej” te aplikacje zyskały niesamowitą popularność. Kult ten wywodzi się z błędnego pojmowania, a może bardziej z niepojmowania, różnicy pomiędzy pamięcią RAM w komputerach PC i urządzeniach mobilnych a pomiędzy tym jak zarządzana jest pamięć w tych urządzeniach. Temat task killerów jest znany i wiele razy był już poruszany, niemniej jednak wiele osób dalej nie zdaje sobie sprawy z rzeczywistości. W niniejszym artykule postaram się sprostować parę rzeczy i nieco uświadomić społeczeństwo.

Czym jest RAM

RAM-em nazywamy pamięć tymczasową (zwaną też operacyjną) o bardzo krótkim czasie dostępu, tj. taką do której można bardzo szybko wczytać dane, a potem równie szybko je odczytać i przetworzyć. Są w niej przechowywane dane programów, do których potrzebny jest jak najszybszy dostęp. Jeżeli dane programu/aplikacji nie znajdują się jeszcze w pamięci RAM, to przy pierwszym jego uruchomieniu zostają one wczytane z dysku twardego, którego prędkość jest znacznie ograniczona w porównaniu z prędkością pamięci operacyjnej. Dlatego właśnie najdłużej zajmuje pierwsze uruchomienie programu, potem gdy jego dane są już obsługiwane przez RAM, działanie przebiega bez żadnych opóźnień. I to by było na tyle jeśli chodzi o podobieństwa w tym jak komputery i urządzenia mobilne zarządzają swoją pamięcią. Rozłam ten wynika z tego, do jakiej pracy te urządzenia zostały zaprojektowane.

Windows

Windows stworzony został do mocnego multitaskingu. Nie wie, które programy będą za chwilę niezbędne, wiec trzyma wszystkie w pamięci i za nic w świecie nie zamknie procesu bez wiedzy użytkownika. Gdy zabraknie mu miejsca tworzy plik, nazywany „swap”, na obszarze dysku twardego, w którym umieszcza dane według niego najmniej potrzebne w danym momencie. W przypadku zwolnienia miejsca w pamięci operacyjnej, lub gdy zaistnieje potrzeba skorzystania z konkretnego programu (którego dane zostały przeniesione do swap) przez użytkownika, jego dane są z powrotem wczytywane do RAM-u, co jeśli chodzi o czas, jest analogicznym działaniem do powolnego wczytywania programu z dysku przy pierwszym jego uruchomieniu. Właśnie dlatego, żeby zapobiec takiej sytuacji należy utrzymywać jak najwyższy poziom ilości wolnego miejsca w pamięci RAM. Tak jak mówiłem, komputerowy system operacyjny nie zadba o to, użytkownik musi sam wskazać procesy, które można zakończyć (np. poprzez wyjście z programu wszystkim dobrze znanym czerwonym krzyżykiem). Stąd między innymi wywodzi się kult czyszczenia RAM-u, bo w przypadku Windowsa ma to sens.

Android

Android, jako platforma mobilna, ma nam umożliwiać szybki dostęp do aplikacji oraz utrzymywać je w stanie połowicznej aktywności, tak aby mogły generować powiadomienia. Ze względu na to, Android jest zaprojektowany tak, aby już od samego początku mieć wczytane do pamięci dane większości aplikacji. Czyli dokładnie przeciwnie do Windowsa – to Android decyduje o tym co zachować, a co wyrzucić z pamięci operacyjnej. Każda próba przeszkadzania Androidowi poprzez wyrzucenie z pamięci danych będzie skutkowała ponownym ich załadowaniem. Trochę jak kłótnia z kobietą, raczej nie masz szansy wygrać, a tylko się zmęczysz. Właśnie takie działanie podejmuje narzędzie nazywane task killerem. Mam nadzieję, że już w tym momencie rozumiecie jakie to jest bez sensu. Najgorsze z tego wszystkiego są auto task killery, które – jak można się domyślić – automatycznie wykonują coś, co nazywane jest czyszczeniem, ale tak naprawdę nim nie jest. Zamiast usprawniać działanie urządzenia sprawiają, że system w kółko zajmuje się bezsensownym usuwaniem i wgrywaniem tych samych danych z i do pamięci RAM. Jedynym sposobem na pozbycie się aplikacji z RAM-u jest jej odinstalowanie. Tak więc sytuacja, w której poziom zajętego RAM-u dochodzi nawet do 90% jest całkowicie normalna i jak najbardziej pożądana w przypadku systemu Android. Co w sytuacji, gdy jest zbyt dużo zainstalowanych aplikacji, a my chcemy odpalić zasobożerną grę i pamięć nam się przepełnia? W takim przypadku wykorzystywana jest zasada podziału aplikacji na priorytety. Na czas grania zatrzymywane są aplikacje w kolejności od najmniej ważnych (według Androida). I tutaj nie ma przeproś. Aplikacje o niskim priorytecie zostaną zatrzymane bez względu na to czy coś robią, czy nie. Zapewne wiele razy doświadczyliście tego, gdy po wyjściu z gry trzeba odczekać chwilę aż załaduje się pulpit Waszego ekranu głównego. Launcher jest traktowany jako proces o bardzo wysokim priorytecie, stąd widać, że jeśli zajdzie taka potrzeba, robocik zamyka absolutnie wszystko, aby gra działała płynnie. Android nie tworzy pliku typu swap, w którym przechowa wszystkie dane każdej aplikacji, dla której nie wystarczyło miejsca w RAM-ie.

Podsumowując…

Android jest tak skonstruowany, żeby jak najwydajniej wykorzystywać pamięć RAM naszego urządzenia, tak aby jego osiągi były optymalne, co przekłada się na komfort użytkowania. Sam decyduje o tym, które procesy zakończyć w przypadku kiedy: potrzeba dużo RAM-u, proces wykonał to, co do niego należy lub też nie był używany od dłuższego czasu. „Nicnierobiące” aplikacje działające w tle zużywają w zasadzie tylko i wyłącznie pamięć operacyjną, wykorzystanie procesora to zaledwie promil lub nawet mniej jego mocy obliczeniowej, w żadnym stopniu nie wpływa to na baterię. Co innego jeśli chodzi o auto task killera, który w kółko wykorzystuje procesor do zatrzymywania procesów i uruchamiania ich za chwilę. Dlatego nie utrudniajmy roboty fachowcowi i dajmy sobie spokój z task killerami.