Dragoljub Radovanović
Značaj RAM-a za Android i njegov multitasking
Čest slučaj koji se javlja kod slabije upućenih Android korisnika je da automatski povezuju stanje na njihovim Windows računarima sa situacijom koju imaju na svom smartfonu ili tabletu. Možemo donekle da razumemo i razlog koji stoji iza ove zabune. Kada korisnik otvori Task Manager u Windowsu i vidi da mu je slobodno više od 60% RAM-a, a isto to uradi na svom Android uređaju i shvati da mu je na raspolaganju samo 25-30%, onda kreće panika. Tada se mogu čuti pitanja kao što su “kako, zašto, telefon mi koristi previše RAM-a, upomoć” i slične situacije koje naizgled u očima neiskusnih korisnika zaista mogu da izgledaju kao ozbiljan problem.
Poenta je u tome da Android kao platforma funkcioniše dosta drugačije po ovom pitanju (i mnogim drugim) od Windowsa na računarima – sa kojima se najčešće upoređuje. Pre svega, želimo da dotaknemo osnove. Šta je to RAM? U pitanju je skraćenica iza koje se nalaze reči Random Access Memory, što bi u slobodnom prevodu značilo memorija sa nasumičnim pristupom, mada pojam koji je najčešće opisuje je “radna memorija”. Ne želimo da se previše udubljujemo u njeno objašnjenje, već ćemo ukratko napomenuti da je to vrsta skladišta u kojem se privremeno čuvaju potrebni podaci. Za razliku od klasičnog skladišta, RAM ima ulogu da dozvoli procesoru da tim podacima pristupi izuzetno velikom brzinom. Kod radne memorije nije visoka samo brzina čitanja, već takođe i upisa, tako da predstavlja idealno mesto za trenutno čuvanje procesa ili aplikacija kod Android uređaja.
Još jedna stvar koja može zbuniti korisnika je činjenica da proces i aplikacija nisu potpuno iste stvari. One ipak jesu usko povezane, tačnije svakoj aplikaciji je potreban proces koji će je pokretati. Štaviše, jedna aplikacija ne mora isključivo da koristi jedan proces, već po potrebi može koristiti i nekoliko. Takođe, više aplikacija može da koristi jedan isti proces. Recimo, ušli ste u neku aplikaciju i posle nekog vremena stisnuli ste Home dugme i vratili se na početni ekran, ili ste ušli u drugu aplikaciju. Iako prva aplikacija trenutno “ne radi ništa”, njen proces je i dalje u radnoj memoriji.
Zašto je Android odlučio da zadrži taj proces kada ga aplikacija trenutno ne koristi? Iz jednog veoma bitnog razloga – možda će u nekom trenutku biti opet potreban. Šta to konkretno znači? Recimo da se vraćate iz druge aplikacije u onu koju ste pokrenuli pre nje. Umesto da je prva aplikacija i njen proces kompletno “ubijena”, ona je ostala u RAM-u i na taj način je mnogo brže ponovo prikazana korisniku. Zašto bi korisnik čekao da aplikacija ponovo bude spremna ako ne mora? To je ključna uloga radne memorije u ovom slučaju. Tu su naravno i sistemski procesi i aplikacije koje su uvek u pozadini, omogućavajući Androidu da pravilno funkcioniše.
Gde je ovde problem i zašto ne bismo držali sve moguće aplikacije u stanju pripravnosti unutar RAM-a? To bi bio idealan slučaj, ali činjenica je da količina dostupnog RAMa nažalost nije neograničena. Kada se uračuna sistem i memorija koja je rezervisana za grafički čip, aplikacijama koje korisnik dodatno preuzme ne ostaje ogromna količina kojom one mogu da raspolažu. Šta se dešava u slučaju da pokrenete toliko aplikacija da procenat slobodne memorije bude jako nizak? Postoji određeni prag koji Android poštuje, preko koga zauzeće memorije ne može da ide, da bi se sprečio negativan uticaj na performanse uređaja.
Sve je to lepo, ali pošto ne možemo držati neograničen broj aplikacija u RAM-u, šta se dešava kada on postane skoro pun? Ovo je zapravo cela poenta članka – način na koji Android kako upravlja memorijom, tačnije njegov menadžment nad memorijom. Android uvek teži da drži što više pokrenutih procesa, tako da zaista ne treba brinuti o količini slobodne memorije – ovde važi filozofija da je neiskorišćen RAM uzaludno protraćen RAM!
Pošto ipak ne možemo da imamo neograničen broj pokrenutih procesa, neki od njih će morati da bude žrtvovan. Pod “žrtvovan” mislimo na to da će biti brutalno “ubijen” ili blažim izrazom ugašen, ali kako Android odabere koji će od njih da strada? Svakako to neće da bude nasumičan odabir, jer to ne bi baš imalo smisla, zar ne?
Dolazimo do pojma koji ćemo nazvati “životni ciklus procesa”. To je zapravo pravilnik Androida po kojem on odlučuje koliko je svaki proces bitan u odnosu na neki drugi – takozvana hijerarhija procesa. Na vrhu su najbitniji procesi od svih, oni koji pokreću aplikaciju koja je trenutno na ekranu, koji su najmanje podložni gašenju jer su bitni za ono što korisnik trenutno radi. Drugi na listi su “Vidljivi procesi”, koji su vidljivi korisniku, ali nisu aktivnost sa kojom je korisnik u interakciji. To je deo aplikacije koji vidimo iza onog što trenutno radimo. Ovi vidljivi procesi su takođe izuzetno bitni i malo je verovatno da će biti ubijeni.
Treći po važnosti su servisni procesi. Oni nisu direktno povezani za ono što vidite na ekranu, već za ono što se dešava u pozadini. U servisne procese će recimo spadati situacije u kojima slušate muziku u pozadini ili preuzimanje podataka sa interneta. Pozadinski procesi spadaju na četvrto mesto po stepenu bitnosti, i oni nisu uopšte vidljivi korisniku, niti imaju bilo kakav uticaj na korisničko iskustvo prilikom upotrebe uređaja. Pošto ovakvih procesa ima najviše kada pokrećemo razne aplikacije, oni su sortirani u “listu najmanje nedavno korišćenih”. Ovo osigurava da će Android aplikaciju koju je korisnik video poslednju staviti na kraju liste za odstrel, pa zatim onu koju smo videli pre nje na pretposlednje mesto, itd. U praksi, aplikacija koja je najstarija u listi pokrenutih će biti ubijena prva, pa zatim ona posle nje, kretavši se od “najslabije korišćenih” ka “najsvežijim”.
Na petom mestu i na samom kraju, tu su prazni procesi. Oni više ne sadrže nijednu aplikaciju, ali drže se u memoriji za potrebe keširanja, kako bi poboljšali brzinu ponovnog pokretanja aplikacije. Pošto su oni najmanje bitni, sistem ih često ubija po potrebi. Šta se dešava kada sistem ubije proces? Cela poenta njegovog gašenja je kako bi kernel ponovo vratio sve resurse koje je proces zahtevao. To znači da je memorija vraćena i može se iskoristiti za neke druge trenutno bitnije procese. Kako bi se stvorila iluzija da su na Androidu sve aplikacije uvek pokrenute, sistem nalazi način da ih ponovo pokrene i prikaže u onom stanju koje su bile pre ubijanja.
Ovo se postiže metodom čuvanja delova aplikacije i prikazivanja informacija kojih je korisnik bio svesan, tačnije u onom stanju u kojem ih je korisnik poslednji put video. Kako se sve ovo odražava na korisnika? Šta zapravo znači imati više RAM-a i koliko je to korisno? Zapravo – veoma je korisno. U današnje vreme 512MB se smatra jedva dovoljnim da Android funkcioniše bez većih problema. 1GB je nešto komotnije, ali opet na granici da iskustvo bude ometano usled pokretanja više aplikacija ili pokretanja veoma zahtevnih aplikacija kao što su velike 3D igre.
Mogli bismo da se upuštamo u duboku priču koliko su Task Killeri loša stvar, ali ćemo samo dati ovaj savet – svi Android korisnici koji imaju telefon sa 1GB RAM-a i verziju veću od 2.1 Eclair ne bi trebalo da koriste Task Killere jer Android ima savršeno dobar sistem menadžmenta RAM-a. Korišćenje Task Killer-a je uglavnom besmisleno i donosi mnogo više štete nego koristi!
Mini zaključak
Sve u svemu, ukoliko na telefonu imate recimo 2GB ili čak 3GB umesto 1GB, dozvoljavate Androidu da drži više aplikacija u stanju pripravnosti kako bi one odmah bile spremne za nastavak korišćenja. Pošto ima više memorije, to se direktno odnosi na to da će Android mnogo manje ubijati aplikacije i ponovo ih učitavati sa iz interne memorije (skladišta). U prevodu, mnogo je manje slučajeva gde ćete morati da čekate da se nešto ponovo učita, tako da se sa više RAM-a brže krećete između aplikacija i sveukupno dobijate bolje korisničko iskustvo. Suština cele priče je da su multitasking mogućnosti naprednije sa većom količinom radne memorije, jer ćete manje čekati na izvršavanje zadatih akcija i manje brinuti o tome da li će Android ubiti aplikaciju koju želite ponovo da pozovete…