Ideálne množstvo pamäte RAM, ktoré telefóny potrebujú pre svoj plynulý multitasking, je pomerne diskutovaná téma. Apple si totiž vo svojich iPhonoch vystačí s menšou veľkosťou, a aj s tou je často použiteľnejšie ako riešenie s Androidom. V iPhone tiež prakticky nenájdete akúkoľvek správu RAM pamäte, zatiaľ čo Android má na to vyčlenenú vlastnú funkciu.
Pokiaľ pôjdete napr. v telefónoch Samsung Galaxy do nastavenie -> Péče o zariadenia, nájdete tu ukazovateľ pamäte RAM s informáciou, koľko priestoru je voľného a koľko zabraného. Po rozkliknutí ponuky tu vidíte, koľko pamäte si ktorá aplikácia berie s tým, že tu máte aj možnosť pamäť vymazať. Nachádza sa tu aj funkcia RAM Plus. Jej zmysel je taký, že z interného úložiska odhryzne určitý počet GB, ktoré použije pre virtuálnu pamäť. Dokážete si niečo také predstaviť na iOS?
Chytré telefóny na pamäť RAM spoliehajú. Slúži im totiž na uloženie operačného systému, na spúšťanie aplikácií a tiež na ukladanie niektorých ich dát do medzipamäte a vyrovnávacej pamäte. Pamäť RAM tak musí byť usporiadaná a spravovaná tak, aby aplikácie mohli hladko fungovať, aj keď ich zhodíte na pozadí a za chvíľu zase otvoríte.
Swift vs. Java
Pri spustení novej aplikácie je ale potrebné mať voľné miesto v pamäti, aby sa tá načítala a spustila. Ak tomu tak nie je, musí sa miesto uvoľniť. Systém teda natvrdo ukončí nejaké bežiace procesy, akými sú práve predovšetkým už skôr spustené aplikácie. Oba systémy, teda Android a iOS, však s RAM pracujú odlišne.
Operačný systém iOS je písaný vo Swifte a iPhony vlastne nepotrebujú recyklovať použité pamäte zo zatvorených aplikácií späť do systému. Je to dané tým, ako je iOS stavaný, pretože Apple nad ním má vzhľadom na to, že ide len na jeho iPhonoch, plnú kontrolu. Oproti nemu je Android písaný v Jave, a je používaný na mnohých zariadeniach, preto musí byť univerzálnejší. Pri ukončení aplikácie je totiž miesto, ktoré tá zabrala, vrátené späť operačnému systému.
Natívny kód vs. JVM
Keď autor napíše aplikáciu pre iOS, skompiluje ju priamo do kódu, ktorý môže bežať na procesore iPhonu. Tomuto kódu sa hovorí natívny kód, pretože k svojmu behu nevyžaduje žiadnu interpretáciu ani virtuálne prostredie. Naproti tomu pri systéme Android je tomu inak. Keď je kód v jazyku Java kompilovaný, zmení sa na medzikód Java Bytecode, ktorý je nezávislý od procesora. Ten teda môže bežať na rôznych procesoroch rôznych výrobcov. To má obrovské výhody pre kompatibilitu medzi platformami.
Samozrejme je tu aj nevýhoda. Každá kombinácia operačného systému a procesora potrebuje prostredie známe ako Java Virtual Machine (JVM). Natívny kód má ale lepší výkon ako kód spustený prostredníctvom JVM, takže použitie JVM jednoducho zvyšuje množstvo pamäte RAM, ktorú aplikácia využíva. Aplikácie pre iOS teda vyžívajú menej pamäte, a to v priemere o 40%. Aj preto vlastne Apple nemusí svoje iPhony osadzovať tak vysokými pamäťami RAM, ako je to pri zariadeniach s Androidom.
Nie som práve odborník, ale popíšem svoj pohľad na vec z hľadiska používateľa, ktorý používal 15 rokov android a teraz som 2 mesiace na iPhone 13 mini. Pri androide s pamäťou 8GB (naposledy Samsung S21, Flip3) som sa väčšinou vrátil po určitej dobe k skôr spustenej aplikácii a tá bola stále načítaná v RAM, takže sa nespúšťala celá znova a mohol som plynule nadviazať, kde som prestal. Na druhú stranu som aj s 8GB pamäťou tak raz za týždeň „zostrelil“ všetky aplikácie, aby sa RAM prečistila, pretože sa systém začal s plnou pamäťou spomaľovať. Na iPhone nemám problém so spomaľovaním, ale na druhú stranu musím povedať, že pri používaní takmer totožných aplikácií sa mi naopak pravidelne stáva, že keď sa do skôr spustenej aplikácie vraciam, tak tá sa načíta kompletne znova a nemôžem plynule nadviazať tam, kde som skončil .
Ktorá varianta je lepšia? Ťažko povedať… Zostreliť aplikácie na androide a vyčistiť RAM je otázka dvoch kliknutí. Načítať celú aplikáciu znova na iPhone nie je zas tak časovo náročné, tak to zase tak veľmi nevadí… Ideálna by samozrejme bola väčšia RAM na iPhone a fungovanie multitaskingu ako na androide :-D
Šmarja to je zase blbosť. Jednak v Jave už sa na androide dlho nerobí, na to je Kotlin. Pamäť má na starosti Garbage collector, ktorý je práve u iOS ten najjednoduchší, čo existuje aj so svojimi zápormi. Celá vec je to o tom, že iOS zabíja aplikácie ihneď, ako ich dáte z obrazovky preč. Tým sa uvoľní pamäť rovnako ako na linuxe, keď napíšete kill pid procesu. Preto tak dlho trvá otvoriť prehliadač a vrátiť sa k predchádzajúcej práci. Tento článok je doslovný preklad X rokov starého článku fanatickým zástancom iOS bez znalosti programovania. Áno, samozrejme, že správu pamäte má na starosti hlavne programátor, čo robí aplikácia. Pokiaľ na to kašľa, memory leak je na svete a pqk môžete mať X Gb pamäte a rovnako je to k ničomu. A v čase, keď je množstvo aplikácií iba WebView, to je hrozne jednoduché, pretože ten sám zožerie čo môže. Článok je nezmysel, odpad.
Android už dávno nepoužíva jvm, ale dvm. A navyše to potom kompiluje do natívneho executable
Java stále v androide je.