Den ideelle mængde RAM, som telefoner har brug for til deres glatte multitasking, er et ret omdiskuteret emne. Apple klarer sig med en mindre størrelse i sine iPhones, som ofte er mere anvendelig end Android-løsninger. Du finder heller ikke nogen form for RAM-hukommelseshåndtering på iPhone, hvorimod Android har sin egen dedikerede funktion til dette.
Hvis du for eksempel går i Samsung Galaxy-telefoner til justering -> Enhedspleje, finder du en RAM-indikator her med information om, hvor meget plads der er ledig, og hvor meget der er optaget. Når du har klikket på menuen, kan du se, hvor meget hukommelse hver applikation tager, og du har også mulighed for at rydde hukommelsen her. RAM Plus-funktionen er også placeret her. Dets betydning er, at det vil bide et vist antal GB fra det interne lager, som det vil bruge til virtuel hukommelse. Kan du forestille dig noget som dette på iOS?
Smartphones er afhængige af RAM. Det tjener dem til at gemme operativsystemet, til at starte applikationer og også til at gemme nogle af deres data i cachen og bufferhukommelsen. RAM skal således organiseres og administreres på en sådan måde, at applikationer kan køre problemfrit, selvom du taber dem i baggrunden og åbner dem igen efter et stykke tid.
Swift vs. Java
Men når du starter et nyt program, skal du have ledig plads i hukommelsen for at indlæse og køre det. Er dette ikke tilfældet, skal pladsen fraflyttes. Systemet vil derfor kraftigt afslutte nogle kørende processer, såsom applikationer, der allerede er startet. Begge systemer, det vil sige Android og iOS, fungerer dog forskelligt med RAM.
iOS-operativsystemet er skrevet i Swift, og iPhones behøver faktisk ikke at genbruge brugt hukommelse fra lukkede apps tilbage i systemet. Det skyldes måden iOS er bygget på, fordi Apple har fuld kontrol over det, da det kun kører på sine iPhones. Derimod er Android skrevet i Java og bruges på mange enheder, så det skal være mere universelt. Når applikationen afsluttes, returneres den plads, det tog, til operativsystemet.
Native kode vs. JVM
Når en udvikler skriver en iOS-app, kompilerer de den direkte til kode, der kan køre på iPhones processor. Denne kode kaldes native kode, fordi den ikke kræver nogen fortolkning eller virtuelt miljø for at køre. Android er på den anden side anderledes. Når Java-kode kompileres, konverteres den til Java Bytecode-mellemkode, som er processoruafhængig. Den kan derfor køre på forskellige processorer fra forskellige producenter. Dette har store fordele for kompatibilitet på tværs af platforme.
Der er selvfølgelig også en ulempe. Hvert operativsystem og processorkombination har brug for et miljø kendt som Java Virtual Machine (JVM). Men native kode fungerer bedre end kode, der udføres gennem JVM, så brug af JVM øger simpelthen mængden af RAM, der bruges af applikationen. Så iOS-apps bruger mindre hukommelse, i gennemsnit 40 %. Det er også derfor, Apple ikke skal udstyre sine iPhones med så meget RAM, som det gør med Android-enheder.
Jeg er ikke ligefrem en ekspert, men jeg vil beskrive mit perspektiv fra perspektivet af en bruger, der har brugt Android i 15 år og nu er 2 måneder inde i iPhone 13 mini. På android med 8 GB hukommelse (senest Samsung S21, Flip3) vendte jeg normalt tilbage efter en vis tid til den tidligere lancerede applikation, og den var stadig indlæst i RAM, så den startede ikke forfra, og jeg kunne uden problemer fortsætte, hvor jeg slap. På den anden side, selv med 8 GB hukommelse, "skød" jeg alle applikationer ned en gang om ugen for at rydde RAM'en, fordi systemet begyndte at bremse med fuld hukommelse. Jeg har ikke noget problem med at sætte farten ned på iPhone, men på den anden side må jeg sige, at når jeg bruger næsten identiske applikationer, så sker det tværtimod jævnligt for mig, at når jeg vender tilbage til en tidligere lanceret applikation. den loader helt igen og jeg kan ikke uden problemer fortsætte hvor jeg slap .
Hvilken mulighed er bedre? Svært at sige... At dræbe apps på Android og rydde RAM er et spørgsmål om to klik. At indlæse hele applikationen igen på iPhone er ikke så tidskrævende, så det gør ikke så meget... Det ville selvfølgelig være ideelt at have mere RAM på iPhone og multitasking som på Android :-D
Shit, det er dumt igen. For det første har Android ikke været lavet i Java i lang tid, det er det Kotlin er til for. Garbage collector har ansvaret for hukommelsen, som er den enkleste i iOS, som eksisterer selv med sine ulemper. Det hele er, at iOS dræber apps, så snart du fjerner dem fra skærmen. Dette frigør hukommelse ligesom på linux, når du skriver kill pid af en proces. Det er derfor, det tager så lang tid at åbne browseren og vende tilbage til det tidligere arbejde. Denne artikel er en ordret oversættelse af en X år gammel artikel af en iOS-fanatiker uden programmeringskendskab. Ja, selvfølgelig er hukommelsesstyring hovedsageligt programmørens ansvar, hvad applikationen gør. Hvis han hoster på det, er der en hukommelseslækage i verden og pqk du kan have X Gb hukommelse og den er stadig ubrugelig. Og i en tid, hvor mange applikationer kun er WebView, er dette meget enkelt, fordi det selv spiser, hvad det kan. Artiklen er noget sludder, vrøvl.
Android bruger ikke længere jvm, men dvm. Og derudover kompilerer den det så til en native eksekverbar
Java er stadig i Android.