Idealna količina RAM-a, ki jo telefoni potrebujejo za nemoteno večopravilnost, je precej razpravljiva tema. Apple se znajde z manjšo velikostjo svojih iPhonov, ki so pogosto bolj uporabni kot rešitve za Android. Prav tako na iPhonu ne boste našli nobenega upravljanja pomnilnika RAM, medtem ko ima Android za to svojo namensko funkcijo.
Če greste na primer v telefone Samsung Galaxy do Nastavitve -> Skrb za napravo, boste tukaj našli indikator RAM-a s podatki o tem, koliko prostora je prostega in koliko je zasedenega. Po kliku na meni lahko vidite, koliko pomnilnika zavzame posamezna aplikacija, tukaj pa imate tudi možnost, da počistite pomnilnik. Tu se nahaja tudi funkcija RAM Plus. Njegov pomen je, da bo od notranjega pomnilnika odgriznil določeno število GB, ki jih bo porabil za virtualni pomnilnik. Si predstavljate kaj takega na iOS-u?
Pametni telefoni se zanašajo na RAM. Služi jim za shranjevanje operacijskega sistema, za zagon aplikacij in tudi za shranjevanje nekaterih njihovih podatkov v predpomnilnik in medpomnilnik. Tako mora biti RAM organiziran in upravljan tako, da lahko aplikacije delujejo gladko, tudi če jih spustite v ozadje in čez nekaj časa znova odprete.
Swift vs. Java
Toda ko zaženete novo aplikacijo, morate imeti prosti prostor v pomnilniku, da jo naložite in zaženete. Če temu ni tako, je treba prostor izprazniti. Sistem bo zato prisilno prekinil nekatere tekoče procese, na primer aplikacije, ki so se že zagnale. Vendar pa oba sistema, torej Android in iOS, delujeta drugače z RAM-om.
Operacijski sistem iOS je napisan v Swiftu in iPhonom pravzaprav ni treba reciklirati uporabljenega pomnilnika iz zaprtih aplikacij nazaj v sistem. To je posledica načina, kako je iOS zgrajen, saj ima Apple popoln nadzor nad njim, saj deluje samo na njegovih iPhonih. Nasprotno pa je Android napisan v Javi in se uporablja na številnih napravah, zato mora biti bolj univerzalen. Ko se aplikacija prekine, se prostor, ki ga je zavzela, vrne operacijskemu sistemu.
Izvorna koda vs. JVM
Ko razvijalec napiše aplikacijo za iOS, jo prevede neposredno v kodo, ki se lahko izvaja na procesorju iPhone. Ta koda se imenuje izvorna koda, ker za izvajanje ne potrebuje interpretacije ali virtualnega okolja. Android pa je drugačen. Ko je koda Java prevedena, se pretvori v vmesno kodo Java Bytecode, ki je neodvisna od procesorja. Zato lahko deluje na različnih procesorjih različnih proizvajalcev. To ima velike prednosti za združljivost med platformami.
Seveda obstaja tudi slaba stran. Vsaka kombinacija operacijskega sistema in procesorja potrebuje okolje, znano kot Java Virtual Machine (JVM). Toda izvorna koda deluje bolje kot koda, ki se izvaja prek JVM, zato uporaba JVM preprosto poveča količino RAM-a, ki ga uporablja aplikacija. Tako aplikacije za iOS porabijo manj pomnilnika, v povprečju 40 %. Tudi zato Applu svojih iPhonov ni treba opremiti s toliko RAM-a kot napravam Android.
Nisem ravno strokovnjak, vendar bom opisal svoj pogled z vidika uporabnika, ki je android uporabljal 15 let in je zdaj že 2 meseca v iPhone 13 mini. Na androidu z 8 GB pomnilnika (nazadnje Samsung S21, Flip3) sem se po določenem času običajno vrnil na predhodno zagnano aplikacijo in je bila še vedno naložena v RAM-u, tako da se ni začelo znova in sem lahko gladko nadaljeval, kjer sem zapustil. Po drugi strani pa sem tudi pri 8GB pomnilnika enkrat tedensko "sestrelil" vse aplikacije, da sem počistil RAM, ker je ob polnem pomnilniku sistem začel upočasnjevati. Na iPhonu sicer nimam težav z upočasnjevanjem, po drugi strani pa moram povedati, da pri uporabi skoraj enakih aplikacij, ravno nasprotno, redno se mi zgodi, da ko se vrnem na prej zagnano aplikacijo, znova se popolnoma naloži in ne morem gladko nadaljevati tam, kjer sem končal.
Katera možnost je boljša? Težko je reči ... Ubijanje aplikacij na androidu in čiščenje RAM-a je stvar dveh klikov. Ponovno nalaganje celotne aplikacije na iPhonu ni tako zamudno, tako da ni tako pomembno... Seveda bi bilo idealno, da bi bilo na iPhonu več RAM-a in večopravilnost kot na Androidu :-D
Sranje, spet je neumno. Prvič, Android že dolgo ni bil narejen v Javi, temu je namenjen Kotlin. Garbage collector je zadolžen za pomnilnik, ki je najpreprostejši v iOS-u, ki obstaja tudi s svojimi pomanjkljivostmi. Vse je v tem, da iOS ubije aplikacije takoj, ko jih umaknete z zaslona. To sprosti pomnilnik tako kot pri linuxu, ko vnesete kill pid procesa. Zato traja tako dolgo, da odprete brskalnik in se vrnete na prejšnje delo. Ta članek je dobesedni prevod X let starega članka fanatika iOS brez znanja programiranja. Ja, seveda, za upravljanje pomnilnika je odgovoren predvsem programer, kaj počne aplikacija. Če zakašlja nanj, je na svetu prišlo do puščanja pomnilnika in pqk, lahko imaš X Gb pomnilnika, pa je še vedno neuporaben. In v času, ko je veliko aplikacij samo WebView, je to zelo preprosto, saj sam poje, kar lahko. Članek je neumnost, smeti.
Android ne uporablja več jvm, ampak dvm. In poleg tega ga nato prevede v izvorno izvršljivo datoteko
Java je še vedno v Androidu.