De ideale hoeveelheid RAM die telefoons nodig hebben voor soepel multitasken is een nogal besproken onderwerp. Apple komt rond met een kleiner formaat in zijn iPhones, wat vaak beter bruikbaar is dan Android-oplossingen. Ook zul je op de iPhone geen enkele vorm van RAM-geheugenbeheer vinden, terwijl Android hiervoor een eigen speciale functie heeft.
Als je bijvoorbeeld in Samsung Galaxy-telefoons gaat afstelling -> Onderhoud van het apparaat, vindt u hier een RAM-indicator met informatie over hoeveel ruimte vrij is en hoeveel in beslag wordt genomen. Nadat je op het menu hebt geklikt, kun je zien hoeveel geheugen elke applicatie in beslag neemt en heb je hier ook de mogelijkheid om het geheugen te wissen. Hier bevindt zich ook de RAM Plus-functie. De betekenis ervan is dat het een bepaald aantal GB uit de interne opslag zal afbijten, dat het zal gebruiken voor virtueel geheugen. Kun je je zoiets voorstellen op iOS?
Smartphones zijn afhankelijk van RAM. Het dient hen om het besturingssysteem op te slaan, applicaties te starten en ook om een deel van hun gegevens in de cache en het buffergeheugen op te slaan. RAM moet dus zo worden georganiseerd en beheerd dat applicaties soepel kunnen draaien, zelfs als je ze naar de achtergrond laat vallen en ze na een tijdje opnieuw opent.
Snel versus Java
Maar wanneer u een nieuwe toepassing start, moet u vrije ruimte in het geheugen hebben om deze te laden en uit te voeren. Indien dit niet het geval is, dient de plaats ontruimd te worden. Het systeem zal daarom sommige actieve processen, zoals toepassingen die al zijn gestart, met geweld beëindigen. Beide systemen, dat wil zeggen Android en iOS, werken echter anders met RAM.
Het iOS-besturingssysteem is geschreven in Swift en iPhones hoeven gebruikt geheugen van gesloten apps niet echt terug in het systeem te recyclen. Dit komt door de manier waarop iOS is gebouwd, omdat Apple er de volledige controle over heeft, aangezien het alleen op iPhones draait. Android is daarentegen in Java geschreven en wordt op veel apparaten gebruikt, dus het moet universeler zijn. Wanneer de toepassing wordt beëindigd, wordt de benodigde ruimte teruggegeven aan het besturingssysteem.
Native code vs. JVM
Wanneer een ontwikkelaar een iOS-app schrijft, compileert hij deze rechtstreeks in code die op de processor van de iPhone kan draaien. Deze code wordt native code genoemd omdat er geen interpretatie of virtuele omgeving voor nodig is. Android daarentegen is anders. Wanneer Java-code wordt gecompileerd, wordt deze geconverteerd naar Java Bytecode-tussencode, die processoronafhankelijk is. Het kan daarom op verschillende processors van verschillende fabrikanten draaien. Dit heeft enorme voordelen voor platformonafhankelijke compatibiliteit.
Natuurlijk is er ook een keerzijde. Elke combinatie van besturingssysteem en processor heeft een omgeving nodig die bekend staat als de Java Virtual Machine (JVM). Maar native code presteert beter dan code die via de JVM wordt uitgevoerd, dus het gebruik van de JVM verhoogt eenvoudigweg de hoeveelheid RAM die door de applicatie wordt gebruikt. iOS-apps gebruiken dus minder geheugen, gemiddeld 40%. Dat is ook de reden waarom Apple zijn iPhones niet met zoveel RAM hoeft uit te rusten als bij Android-apparaten.
Ik ben niet bepaald een expert, maar ik zal mijn perspectief beschrijven vanuit het perspectief van een gebruiker die al 15 jaar Android gebruikt en nu twee maanden bezig is met de iPhone 2 mini. Op Android met 13GB geheugen (meest recentelijk Samsung S8, Flip21) keerde ik meestal na een bepaalde tijd terug naar de eerder gestarte applicatie en deze stond nog in het RAM geladen, dus hij begon niet helemaal opnieuw en ik kon vlot verdergaan waar ik gestopt. Aan de andere kant, zelfs met 3 GB geheugen, "schoot" ik alle applicaties één keer per week uit om het RAM-geheugen leeg te maken, omdat het systeem begon te vertragen toen het geheugen vol was. Ik heb geen probleem met het vertragen van de iPhone, maar aan de andere kant moet ik zeggen dat bij gebruik van vrijwel identieke applicaties het mij integendeel regelmatig overkomt dat wanneer ik terugkeer naar een eerder gestarte applicatie, het laadt weer helemaal en ik kan niet soepel verdergaan waar ik gebleven was.
Welke optie is beter? Moeilijk te zeggen... Apps op Android doden en RAM wissen is een kwestie van twee klikken. Het opnieuw laden van de hele applicatie op de iPhone is niet zo tijdrovend, dus het maakt niet zoveel uit... Het zou natuurlijk ideaal zijn om meer RAM op de iPhone te hebben en te multitasken zoals op Android :-D
Shit, het is weer dom. Om te beginnen is Android al een hele tijd niet meer in Java gedaan, daar is Kotlin voor. De vuilnisman heeft de leiding over het geheugen, het eenvoudigste in iOS, dat zelfs met zijn nadelen bestaat. Het hele ding is dat iOS apps doodt zodra je ze van het scherm haalt. Dit maakt geheugen vrij, net als op Linux wanneer je kill pid van een proces typt. Daarom duurt het zo lang om de browser te openen en terug te keren naar het vorige werk. Dit artikel is een letterlijke vertaling van een X jaar oud artikel van een iOS-fanaat zonder programmeerkennis. Ja, natuurlijk is geheugenbeheer voornamelijk de verantwoordelijkheid van de programmeur, wat de applicatie doet. Als hij erop hoest, is er een geheugenlek in de wereld en pqk kun je X Gb geheugen hebben en het is nog steeds nutteloos. En in een tijd waarin veel applicaties alleen maar WebView zijn, is dat heel eenvoudig, omdat het zelf eet wat het kan. Het artikel is onzin, onzin.
Android gebruikt niet langer jvm, maar dvm. En bovendien compileert het het vervolgens in een native uitvoerbaar bestand
Java zit nog steeds in Android.