Ważne

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.

Jeżeli znalazłeś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij tutaj. Możesz też zgłosić błąd pisząc na powiadomienia@tabletowo.pl.

Komentarze

  • PW

    Czy w Windows 8.1 nie jest czasem tak, jak na Androidzie?

    • Z czym? Plik wymiany istnieje i jest stosowany do rozwiązań desktopowych. Ale tak jak mówisz, aplikacje Modern UI mają osobnego zarządce pamięcią i są „wyłączane” gdy potrzeba zwolnić trochę pamięci. Oczywiście to dużo bardziej złożony proces, ale co do zasady tak to wygląda.

      • PW

        Gdzieś czytałem, że Win 8.1 pozostawia w pamięci zamykane aplikacje, aby przy ponownym ich uruchomieniu nie było potrzeby ich ładowania – pamięć jest zwalniana dopiero wtedy, kiedy jest potrzebna.

        • Tomasz Lenartowski

          Ale to właśnie chyba tylko metro. Aplikacja ma pustą pętlę wykonania i siedzi w pamięci, ale nie wymaga zbyt wiele mocy obliczeniowej. Słowo kluczowe to chyba – jak się mylę to mnie poprawcie.

        • I tak i nie – W8.1 pozwala na dwa sposoby zamykania appek – twardy i miękki. Miękki działa tak jak mówisz, twardy zabija proces.

        • b@t

          ja mam pusty startup i sam win 8.1 32bit zajmuje mi na starcie okolo 320 mb w ram-ie a i tak robi okolo 800mb swapa przy 2 gb pamieci kompa.

        • noname

          Metro app:
          Aplikacja, jeśli wchodzi w tryb :
          „uśpienia” otrzymuje event w którym programista jest odpowiedzialny za zwolnienie uchwytów do plików itd. zachowanie stanu w osobnym pliku (jeśli taki jest wykorzystany) itd.
          „wybudzenia” – odczytanie zapisanych informacji, odtworzenia uchwytów do plików itd.
          To co się dzieje w resumie i suspend jest specyficzne dla każdej z aplikacji (w zależności od tego co one wykonują).

          Nie ma tutaj „pustej pętli wykonywania” itd. aplikacja przestaje działać a jej stan jest zapisany. Tak samo jak wyjście / wejście z / do funkcji main() aplikacji.

          W momencie gdy aplikacja jest zamknięta – tj. kafelka aplikacji się obróci po przeniesieniu do dolnego obszaru ekranu w Modern Ui – aplikacja jest zamykana i pamięć zwalniana.

          Desktop app:
          Od Vista SuperFetch zarządza pamięcią i generalnie aplikacja po wyjściu jest w pamięci, jeśli się nie zmieniła. Jest kilka profili działania i to jest kwestia tego jakie aplikacje są uruchamiane. Oczywiście jest także mechanizm sprawdzania czy kod aplikacji się nie zmienił i jeśli tak to nie cache ale ponowny odczyt.

          Tutaj także wchodzi SuperPrefetch i jeśli np. po uruchomieniu PC uruchomiona jest przeglądarek np. Firefox to jej DLL’ki zostają wczytane do RAM (pomimo tego, że aplikacja np. nie jest jeszcze uruchomiona) z najniższym priorytetem i po tym jak wszystkie aplikacje z run / autorun / runonce / startup itd. zostają załadowane i oczywiście jeśli DLLki nie są jeszcze w pamięci.

  • Paweł

    A co w takim razie o Autor sądzi o aplikacjach przedłużających działanie baterii? Pytam, bo używam i task killera i „baterioprzedłużacza” i wydaje mi się, że o ile odkąd je zainstalowałem okres pomiędzy jednym a drugim ładowaniem nie uległ zmianie, więc jestem skłonny uwierzyć, że to ściema, o tyle telefon zaczął pracować płynniej, gdy sobie „wyczyszczę” pamięć kilka razy dziennie.

    • Te wszystkie przedłużacze to taka sama ściema jak task killery

      • _TB_TB_

        – Greenify
        – Amplify
        Działają. Ściema się sam ;-)

        • Akurat Greenify jest aplikacją do której działania potrzebna roota i służy ona do hibernowania aplikacji. Chodzi mi bardziej o appki, które mają magiczne działanie na samą baterię, a tak naprawdę to pic na wodę.

          • Greenify nie potrzebuje roota. Potrzebuje go tylko jeden z jego modułów, który nie jest wymagany do instalacji.

          • _TB_TB_

            „Magicznie roładowywują” ;)
            Czasem taskkillery bywają przydatne, jak np jakaś aplikacja pracuje w tle i za nic nie chce się przywrócić (np gra) i pożera dużo zasobów. Autotaskkillery to zuo.

    • b@t

      zamiast task killer-ow proponuje DEZAKTYWOWAC niepotrzebne apki np te od googla kioski i inne pierdoly i zbedne widgety ja po wył. syfu od GOOGLA zyskalem okolo 3 godz dluzszej aktywnosci tabletu (bez roota).

  • Piotrek

    a nawet mają wpływają one niekorzystne na nasze urządzenia,

  • m

    Po raz kolejny czytam teorię która się ma nijak do praktyki. Mam widżet zwalniający Ram i czasami jak mi telefon przymula, kliknięcie go odmula system. Po prostu.

    • O ile robimy to ręcznie i rzadko to może to tak zadziałać, natomaist główny nacisk w tym artykule chciałem położyć na auto task killery, które więcej zużywają mocy procesora i baterii na ciągłe czyszczenie niż tak naprawdę zyskuje się na ich działaniu

    • Marcin Mierzejewski

      A czy w tym momencie przypadkiem nie jest zabijany proces używany, dopiero co zminimalizowany? Jeśli smartfon/tablet z Androidem ma dramatycznie mało RAM na starcie, to ciężko przypuszczać, że będzie płynnie działać. Wtedy task killer nie zrobi niczego złego. Ubije wszystko, co się da. Odwiesi tym samym urządzenie.

      • doogopis

        A tam dramatycznie mało ja mam koło 650mb,czasami z nudów coś ubije?Az ciekawości ile masz ram?

    • kuken

      Mam dokłądnie tak samo, ubijam aplikacje gdy zamula telefon. Szczegolnie jak wlacze siec WiFi czy dane, budzi sie tyle tego cholerstwa, ze „zwolnienie pamieci” jest jedyna szansa na odzyskanie mocy procka.

      • doogopis

        To ile ty masz pamięci ram?

  • Dlatego nie rozumiem dlaczego samsung tak nagminnie ładuje ten task manager do swojego touchwiza

  • Marcin Mierzejewski

    Task Killer, a raczej narzędzia zwalniające nieużywaną pamięć RAM mają swoje uzasadnienie w systemach, które trzymają procesy, aż do permanentnego spowolnienia sprzętu. To dobre rozwiązanie dla Windowsa, gdzie procesy nie są zabijane. Systemy mobilne w większości mają zdolność do odzyskiwania pamięci, więc te narzędzia nie dają żadnych korzyści.

    • matti

      A chciałbyś, żeby Ci Windows zabijał procesy? Na podstawie czego taki task killer miałby zabić jakiś proces? Losowo? W Androidzie tylko jeden proces jest „na pierwszym planie” na ekranie – aktywna jest tylko jedna „activity”. Reszta, z wyjątkiem tych uruchomionych przez system, można uznać za zamknięte i nieaktywne. A w Windows? Chciałbyś, żeby Ci system zamknął odtwarzacz MP3 albo przeglądarkę w momencie wyczerpywania się pamięci?

      • Marcin Mierzejewski

        Mój post nie był wątpliwością na opisany temat, a komentarzem do tematu. Na co dzień pracuję z komputerami, wręcz z nimi obcuję, również od środka. To wszystko jest jasne, jak słońce i również, jak autor nie widzę dla „task killerów” miejsca w systemach mobilnych. Więc odpowiedź na Twoje pytania czytelniku jest zbędna.

        • b@t

          ja tez z nimi „obcuje od srodka” mam INTELIGENTNY DOM .

  • AS

    No dobrze, wchodzę do aplikacji, następnie klikam przycisk Home i aplikacja, czy jej potrzebuje, czy tez nie zostaje w pamięci. Może by tak jakiś wynalazca mobilny przypomniał sobie o przycisku X lub zamknij? Nie wszystkie aplikacje mobile musza pracować w tle.

    • matti

      Jeśli aplikacja nic w tle nie robi, to siedzi w pamięci do czasu, aż pamięć jest potrzebna na coś innego. Za to jeśli po wyjściu szybko otworzysz aplikację, to nie musi się ona ładować do pamięci. Dzięki temu jeśli np. potrzebujesz do pisanego właśnie maila wkleić coś z innej aplikacji, to możesz się przełączyć i wrócić potem do tego samego miejsca, z którego wyszedłeś. To akurat nie spowalnia systemu.Będzie działać wolno wtedy, gdy zbyt wiele aplikacji w tle faktycznie pracuje.

      • AS

        Własnie :)

    • cyc997

      U mnie wystarczy przytrzymać guzik wstecz i zamyka, a nie minumalizuje.

  • uru28

    Miało by to sens, gdyby dotyczyło aplikacji przez nas używanych.Jednak w przypadku Androida bez względu czy dana apka jest przez nas używana czy nie zostaje ładowana(lub jej komponenty) do pamięci. Do tego dochodzi fakt iż nie wszystkie aplikacje w androidzie da się odinstalować.(zwłaszcza jeśli chodzi o Google). Nie twierdzę oczywiście że autor nie ma racji,choć sam uważam że „androidowe” podejście do RAMu to marnowanie jego pojemności.

    • matti

      System nie ładuje aplikacji ot tak, bo sobie ma na to ochotę. Jeśli coś się ładuje to dlatego, że jest tak skonfigurowane – bo np. wyświetla powiadomienia, albo ma synchronizować dane, albo producent telefonu tak ją skonfigurował, albo czuwa na jakieś zdarzenie w systemie. Można się naprawdę zdziwić przy jakich zdarzeniach jakie aplikacje się budzą… Ale nie jest to problem Androida jako takiego, a twórców aplikacji.

      • uru28

        Owszem zgadza się, tyle że po kiego grzyba mają być aktywne powiadomienia i aplikacja z której nie korzystam,lub z której korzystam raz na miesiąc….Można to było inaczej rozwiązać.I tak masz rację, większość „śmiecia” to dodatki i nakładki producentów i operatorów choć i sam android nie jest „czysty”. System nie ładuje aplikacji ot tak sobie…Tak jak zapewne ot tak sobie aplikacja „szachy” nie bez powodu wymaga dostępu do bazy adresowej,galerii zdjęci itd… Oto cena jaką płacimy za darmowości aplikacji.

    • b@t

      sporo takich apek mozna dezaktywowac w „ustawieniach aplikacji”

  • matti

    Windows 7 też „keszuje” zamknięte aplikacje. Task manager w zakładce „wydajność” w ramce „Pamięć fizyczna” pokazuje cztery wartości: Razem, Buforowana, Dostępna i Wolna. Wolna – to dosłownie wolna. Buforowana to pamięć zajęta przez procesy, które zostały zamknięte. W razie potrzeby pamięć ta może być szybko zwolniona i udostępniona na bieżące potrzeby. Dlatego pamięć dostępna to pamięć wolna + pamięć buforowana. Mechanizm ten jest chyba dość podobny do androidowego: użytkownik zamyka program, ale system wcale nie musi pozbywać się go z pamięci.

    Co ciekawe jeśli uruchomi się Monitor zasobów i wejdzie na zakładkę „Pamięć”, to tam nazewnictwo tych samych obszarów pamięci jest już inne: w legendzie paska jest wpisane „Wstrzymane”, a w słupku poniżej – „Podręczna”.

  • Przydało by się jeszcze streszczenie działania iOS i ewentualnie mniej popularnych systemów jak Tizen, Ubuntu Touch, Firefox OS… Jestem ciekaw jak to zostało rozwiązane w tych mniej popularnych systemach?

  • b@t

    task killera uzywalem tylko na andku 2.3.6 bo tam nie bylo opcji usuwania aplikacji dzialajacych w tle (a raczej ostatnio uzywanych) od ICS-a juz killerow nie uzywam.

  • janko

    Task killery i wszelkie „poprawiacze, dopalacze, przyspieszacze” Androida to generalnie ściema, ale legenda, że pamięć RAM ma być zapchana pod korek i wtedy jest dobrze, to też ściema. Tak im wyszło, że Android strasznie szasta pamięcią RAM, więc na szybko dorobili legendę, że to dobrze. Oczywiście nie jest dobrze, bo programy potrzebują pamięci RAM, żeby działać, a tu na starcie mamy zjedzoną prawie całą pamięć przez system i jakieś duperelowate, nikomu niepotrzebne dodatki do systemu, natomiast interesujące nas aplikacje, których chcemy używać, działają na jakichś resztkach RAM, które są dynamicznie „wyrywane”. M.in. z tego bierze się kijowa wydajność Androida, dopiero na 4 rdzeniach i 2GB RAM ten system zaczyna działać normalnie, a u konkurencji na 2 rdzeniach i 512MB RAM jest nieosiągalna dla Androida szybkość i płynność dzialania.

  • Ww

    Przydałby się jakiś porządny artykuł jak odinstalować wszystkie śmieci działające w tle (kioski nie kioski, game huby itp)

    • Egzo

      Z rootem to nie problem, natomiast sam root dla wielu to już nie taka prosta sprawa, utrata gwarancji, możliwe uszkodzenie telefonu itp.

      • niconozomu

        Z tym uszkodzeniem to bym polemizował.

        • Root jest zwykłym dostępem do plików i niczego nie może uszkodzić (jeśli umiejętnie będzie zrobiony). To tak jak by na Linuksie wpisać komendę „su”, „sudo” i obawiać się, że coś się uszkodzi. Uszkodzić to można już po, jak się grzebie z prawami do roota.

  • gener

    Pewnym wyjaśnieniem jest artykuł, ale non stop brakuje mi pamięci urządzenia, wtedy do hurtowego czyszczenia program, prosty się przydaje. Albo root i zmiana pamięci. Android swap nie tworzy, za to aplikacje permanentnie zajmują pamięć podręczną.

  • noname

    Wydaje mi się że zapomniano o jednym ważnym szczególe, tj. o tym jak działa RAM.
    Obecnie powszechnie stosowane są pamięci typu DRAM – oznacza to to, że aby komórka pamięci zachowała swój stan musi zostać odświeżona co około 60ms. I teraz powstaje pytanie – lepiej dawać napięcie na „czystą” pamięć czy trzymać coś w niej? Bo i tak ona będzie pobierać tyle samo prądu.

    Obecnie wszystkie systemy operacyjne posiadają, w jakiejś formie, mechanizm cache dla aplikacji. Np. Windows i Prefetch/SuperPrefetch, Linux – disk cache, Android – mem management, MacOsX – mem cache. Generalnie idea jest prosta – OS pozostawia w RAM’ie tyle ile się da aby zniwelować dostęp do SDD/HDD. Ta pamięć jest Wolna. Np. w systemie jest 1GB pamięci i aplikacja zostaje uruchomiona która wykorzystuje np. 950MB – cały cache zostaje zwolniony – nie ma tutaj wyjątku i aplikacja ma dostęp do 1GB.

    W przypadku Android’a w momencie gdy aplikacja jest „zamknięta” zasoby Ui powinny zostać zwolnione (deweloper job!) (okienka, bitmapy itd.) zostają usunięte z RAM ale proces pozostaje w LRU i jeśli brakuje RAM’u ostatnia pozycja z LRU zostaje zwolniona (w zależności od zapotrzebowania aż do całkowitego jej zwolnienia).

    Dodatkowo Android ma limit pamięci jaką może aplikacja zaalokować (ta wielkość zależy od ilości RAM na urządzeniu) i np. jeśli mając 1GB aplikacja chce 2GB OutOfMemory() błąd zostanie zwrócony.

    Oczywiście powyższe to jest tylko czubek góry ponieważ zarządzanie pamięcią jest bardziej skomplikowane ponieważ jest także obszar pamięci współdzielonej itd.

    To są dwa grosze donośnie tematu i oczywiście zgadzam się z myślą przewodnią tego artykułu i stosowanie task killerów mija się z celem ponieważ obecne OS’y POWINNY intensywnie wykorzystywać RAM.

  • Rafal603

    Task killer czyli clean Master du speed

Tabletowo.pl
Logowani/Rejestracja jest chwilowo wyłączona