Den ideelle mengden RAM som telefoner trenger for sin jevne multitasking er ganske omdiskutert. Apple klarer seg med en mindre størrelse i sine iPhones, som ofte er mer anvendelig enn Android-løsninger. Du vil heller ikke finne noen form for RAM-minnehåndtering på iPhone, mens Android har sin egen dedikerte funksjon for dette.
Hvis du går for eksempel i Samsung Galaxy-telefoner til Innstillinger -> Vedlikehold av enheten, finner du en RAM-indikator her med informasjon om hvor mye plass som er ledig og hvor mye som er opptatt. Etter å ha klikket på menyen kan du se hvor mye minne hver applikasjon tar, og du har også muligheten til å tømme minnet her. RAM Plus-funksjonen er også plassert her. Betydningen er at den vil bite av et visst antall GB fra den interne lagringen, som den vil bruke til virtuelt minne. Kan du forestille deg noe slikt på iOS?
Smarttelefoner er avhengige av RAM. Den tjener dem til å lagre operativsystemet, starte applikasjoner og også lagre noen av dataene deres i hurtigbufferen og bufferminnet. Dermed må RAM organiseres og administreres på en slik måte at applikasjoner kan kjøre problemfritt, selv om du slipper dem til bakgrunnen og åpner dem igjen etter en stund.
Swift vs. Java
Men når du starter et nytt program, må du ha ledig plass i minnet for å laste og kjøre det. Dersom dette ikke er tilfelle, må plassen fraflyttes. Systemet vil derfor med kraft avslutte noen kjørende prosesser, for eksempel applikasjoner som allerede har startet. Imidlertid fungerer begge systemene, det vil si Android og iOS, annerledes med RAM.
iOS-operativsystemet er skrevet i Swift, og iPhone trenger faktisk ikke å resirkulere brukt minne fra lukkede apper tilbake til systemet. Dette skyldes måten iOS er bygget på, fordi Apple har full kontroll over det siden det kun kjører på sine iPhones. Derimot er Android skrevet i Java og brukes på mange enheter, så det må være mer universelt. Når applikasjonen avsluttes, blir plassen den tok tilbake til operativsystemet.
Innebygd kode vs. JVM
Når en utvikler skriver en iOS-app, kompilerer de den direkte til kode som kan kjøres på iPhones prosessor. Denne koden kalles native kode fordi den ikke krever noen tolkning eller virtuelt miljø for å kjøre. Android, derimot, er annerledes. Når Java-kode kompileres, konverteres den til Java Bytecode-mellomkode, som er prosessoruavhengig. Den kan derfor kjøres på forskjellige prosessorer fra forskjellige produsenter. Dette har store fordeler for kompatibilitet på tvers av plattformer.
Selvfølgelig er det også en ulempe. Hvert operativsystem og prosessorkombinasjon trenger et miljø kjent som Java Virtual Machine (JVM). Men innfødt kode gir bedre resultater enn kode som kjøres gjennom JVM, så bruk av JVM øker ganske enkelt mengden RAM som brukes av applikasjonen. Så iOS-apper bruker mindre minne, i gjennomsnitt 40 %. Det er også derfor Apple ikke trenger å utstyre sine iPhones med så mye RAM som det gjør med Android-enheter.
Jeg er ikke akkurat en ekspert, men jeg skal beskrive perspektivet mitt fra perspektivet til en bruker som har brukt Android i 15 år og nå er 2 måneder inne på iPhone 13 mini. På android med 8 GB minne (sist Samsung S21, Flip3) returnerte jeg vanligvis etter en viss tid til den tidligere lanserte applikasjonen, og den var fortsatt lastet inn i RAM, så den startet ikke helt på nytt, og jeg kunne enkelt fange opp hvor jeg sluttet. På den annen side, selv med 8 GB minne, "skjøt" jeg ned alle applikasjoner en gang i uken for å tømme RAM-en, fordi systemet begynte å tregere med fullt minne. Jeg har ikke noe problem med å senke farten på iPhone, men på den annen side må jeg si at når jeg bruker nesten identiske applikasjoner, tvert imot, skjer det jevnlig med meg at når jeg går tilbake til en tidligere lansert applikasjon, den laster helt igjen og jeg kan ikke jevnt fortsette der jeg slapp .
Hvilket alternativ er bedre? Vanskelig å si... Å drepe apper på Android og tømme RAM er et spørsmål om to klikk. Å laste hele applikasjonen på nytt på iPhone er ikke så tidkrevende, så det betyr ikke så mye... Selvfølgelig ville det vært ideelt å ha mer RAM på iPhone og multitasking som på Android :-D
Shit, det er dumt igjen. For det første har ikke Android blitt gjort i Java på lenge, det er det Kotlin er for. Garbage collector har ansvaret for minnet, som er det enkleste i iOS, som eksisterer selv med sine ulemper. Hele greia er at iOS dreper apper så snart du tar dem av skjermen. Dette frigjør minne akkurat som på linux når du skriver kill pid av en prosess. Det er derfor det tar så lang tid å åpne nettleseren og gå tilbake til forrige arbeid. Denne artikkelen er en ordrett oversettelse av en X år gammel artikkel av en iOS-fanatiker uten programmeringskunnskap. Ja, selvfølgelig er minnehåndtering hovedsakelig programmererens ansvar, hva applikasjonen gjør. Hvis han hoster på det, er det en minnelekkasje i verden og pqk du kan ha X Gb minne og det er fortsatt ubrukelig. Og i en tid hvor mange applikasjoner kun er WebView, er dette veldig enkelt, fordi det selv spiser det det kan. Artikkelen er tull, søppel.
Android bruker ikke lenger jvm, men dvm. Og i tillegg kompilerer den den til en opprinnelig kjørbar
Java er fortsatt i Android.