Az ideális mennyiségű RAM, amelyre a telefonoknak szüksége van a zökkenőmentes multitaskinghoz, meglehetősen vitatott téma. Az Apple beéri a kisebb mérettel az iPhone-jaiban, ami sokszor jobban használható, mint az androidos megoldások. Az iPhone-on sem talál semmiféle RAM-memóriakezelést, míg az Androidnak saját dedikált funkciója van erre.
Ha megy például a Samsung Galaxy telefonokban, hogy Beállítások -> A készülék gondozása, itt találsz egy RAM jelzőt, melyben megtudhatod, hogy mennyi hely van szabadon és mennyit foglalt. A menüre kattintva láthatja, hogy az egyes alkalmazások mennyi memóriát foglalnak el, illetve itt van lehetőség a memória törlésére is. Itt található a RAM Plus funkció is. Jelentése az, hogy leharap egy bizonyos számú GB-ot a belső tárhelyről, amit virtuális memóriára használ. El tudsz képzelni ilyesmit iOS-en?
Az okostelefonok a RAM-ra támaszkodnak. Őket szolgálja az operációs rendszer tárolására, az alkalmazások indítására, valamint bizonyos adatok tárolására a gyorsítótárban és a puffermemóriában. Így a RAM-ot úgy kell megszervezni és kezelni, hogy az alkalmazások zökkenőmentesen futhassanak, még akkor is, ha háttérbe húzzuk, és egy idő után újra megnyitjuk.
Swift vs. Jáva
Egy új alkalmazás indításakor azonban szabad helynek kell lennie a memóriában a betöltéshez és futtatáshoz. Ha ez nem így van, akkor a helyet fel kell hagyni. A rendszer ezért erőszakkal leállít néhány futó folyamatot, például a már elindított alkalmazásokat. Azonban mindkét rendszer, azaz az Android és az iOS eltérően működik a RAM-mal.
Az iOS operációs rendszer Swift nyelven íródott, és az iPhone-oknak valójában nem kell újrahasznosítaniuk a bezárt alkalmazások elhasznált memóriáját a rendszerbe. Ez az iOS felépítésének köszönhető, mivel az Apple teljes ellenőrzést gyakorol felette, mivel csak az iPhone-okon fut. Ezzel szemben az Android Java nyelven íródott, és sok eszközön használják, ezért univerzálisabbnak kell lennie. Az alkalmazás leállításakor az általa elfoglalt terület visszakerül az operációs rendszerbe.
Natív kód vs. JVM
Amikor egy fejlesztő iOS-alkalmazást ír, azt közvetlenül olyan kódba fordítja, amely futhat az iPhone processzorán. Ezt a kódot natív kódnak nevezik, mert nem igényel értelmezést vagy virtuális környezetet a futtatásához. Az Android viszont más. Amikor a Java kódot fordítják, a rendszer Java Bytecode közbenső kóddá alakítja, amely processzorfüggetlen. Ezért különböző gyártók különböző processzorain futhat. Ennek óriási előnyei vannak a platformok közötti kompatibilitás szempontjából.
Természetesen van egy árnyoldala is. Minden operációs rendszer és processzor kombinációhoz szükség van egy Java Virtual Machine (JVM) néven ismert környezetre. A natív kód azonban jobban teljesít, mint a JVM-en keresztül végrehajtott kód, így a JVM használata egyszerűen megnöveli az alkalmazás által használt RAM mennyiségét. Tehát az iOS alkalmazások kevesebb memóriát használnak, átlagosan 40%-ot. Ez az oka annak is, hogy az Apple-nek nem kell annyi RAM-mal felszerelnie iPhone-ját, mint az Android készülékeknél.
Nem vagyok éppen szakértő, de egy olyan felhasználó szemszögéből írom le a nézőpontomat, aki 15 éve használt androidot, és most 2 hónapja van az iPhone 13 mini-ben. 8 GB memóriával rendelkező androidon (legutóbb Samsung S21, Flip3) általában egy bizonyos idő után visszatértem az előzőleg elindított alkalmazáshoz és még mindig a RAM-ban volt betöltve, így nem kezdődött elölről és simán fel tudtam venni, ahol abbahagyta. Viszont 8GB memóriával is hetente egyszer "lelőttem" minden alkalmazást, hogy ürítsem ki a RAM-ot, mert tele memóriával lassulni kezdett a rendszer. Az iPhone-on nincs gondom a lassítással, másrészt viszont azt kell mondanom, hogy szinte azonos alkalmazások használatakor éppen ellenkezőleg, velem rendszeresen előfordul, hogy amikor visszatérek egy korábban elindított alkalmazáshoz, újra teljesen betöltődik és nem tudom simán ott folytatni ahol abbahagytam .
Melyik lehetőség jobb? Nehéz megmondani… Az alkalmazások megölése Androidon és a RAM törlése két kattintás. Az iPhone-on a teljes applikáció újratöltése nem olyan időigényes, szóval annyira nem számít... Persze az lenne az ideális, ha több RAM lenne az iPhone-on és a multitasking, mint az Androidon :-D
Basszus, ez megint hülyeség. Egyrészt az Androidot már régóta nem csinálják Java-ban, erre való a Kotlin. A memóriáért a szemétgyűjtő felel, ami iOS-ben a legegyszerűbb, ami még a hátrányaival együtt is létezik. Az egész az, hogy az iOS megöli az alkalmazásokat, amint eltávolítja őket a képernyőről. Ez ugyanúgy memóriát szabadít fel, mint Linuxon, amikor egy folyamat kill pid parancsát írja be. Ezért tart olyan sokáig a böngésző megnyitása és az előző munkához való visszatérés. Ez a cikk egy X éves cikk szó szerinti fordítása egy iOS-fanatikustól, aki nem ismeri a programozást. Igen, persze a memóriakezelés elsősorban a programozó feladata, amit az alkalmazás csinál. Ha ráköhög, memóriaszivárgás van a világon és pqk lehet X Gb memóriád és még mindig használhatatlan. És akkor, amikor sok alkalmazás csak WebView, ez nagyon egyszerű, mert maga is megeszi, amit tud. A cikk hülyeség, szemétség.
Az Android már nem jvm-et használ, hanem dvm-et. Ráadásul natív végrehajtható fájlba fordítja
A Java még mindig Androidon van.