Den idealiska mängden RAM som telefoner behöver för sin smidiga multitasking är ett ganska omdiskuterat ämne. Apple klarar sig med en mindre storlek i sina iPhones, som ofta är mer användbar än Android-lösningar. Du kommer inte heller att hitta någon form av RAM-minneshantering på iPhone, medan Android har en egen dedikerad funktion för detta.
Om du går till exempel i Samsung Galaxy-telefoner till justering -> Enhetsvård, hittar du en RAM-indikator här med information om hur mycket utrymme som är ledigt och hur mycket som är upptaget. Efter att ha klickat på menyn kan du se hur mycket minne varje applikation tar, och du har även möjlighet att rensa minnet här. RAM Plus-funktionen finns också här. Dess innebörd är att den kommer att bita av ett visst antal GB från den interna lagringen, som den kommer att använda för virtuellt minne. Kan du föreställa dig något liknande på iOS?
Smartphones är beroende av RAM. Det tjänar dem till att lagra operativsystemet, för att starta applikationer och även för att lagra en del av deras data i cachen och buffertminnet. Således måste RAM-minne organiseras och hanteras på ett sådant sätt att applikationer kan köras smidigt, även om du släpper dem i bakgrunden och öppnar dem igen efter ett tag.
Swift vs. Java
Men när du startar ett nytt program måste du ha ledigt utrymme i minnet för att ladda och köra det. Om så inte är fallet ska platsen utrymmas. Systemet kommer därför att tvångsavbryta vissa pågående processer, till exempel applikationer som redan har startat. Men båda systemen, det vill säga Android och iOS, fungerar olika med RAM.
iOS-operativsystemet är skrivet i Swift, och iPhones behöver faktiskt inte återvinna använt minne från stängda appar tillbaka till systemet. Detta beror på hur iOS är byggt, eftersom Apple har full kontroll över det eftersom det bara körs på sina iPhones. Däremot är Android skrivet i Java och används på många enheter, så det måste vara mer universellt. När programmet avslutas återförs utrymmet det tog till operativsystemet.
Inbyggd kod vs. JVM
När en utvecklare skriver en iOS-app kompilerar de den direkt till kod som kan köras på iPhones processor. Denna kod kallas inbyggd kod eftersom den inte kräver någon tolkning eller virtuell miljö för att köras. Android, å andra sidan, är annorlunda. När Java-kod kompileras omvandlas den till Java Bytecode-mellankod, som är processoroberoende. Den kan därför köras på olika processorer från olika tillverkare. Detta har stora fördelar för plattformsoberoende kompatibilitet.
Naturligtvis finns det också en baksida. Varje kombination av operativsystem och processor behöver en miljö som kallas Java Virtual Machine (JVM). Men inbyggd kod presterar bättre än kod som körs genom JVM, så att använda JVM ökar helt enkelt mängden RAM som används av applikationen. Så iOS-appar använder mindre minne, i genomsnitt 40 %. Det är också därför Apple inte behöver utrusta sina iPhones med lika mycket RAM som det gör med Android-enheter.
Jag är ingen expert precis, men jag kommer att beskriva mitt perspektiv ur perspektivet av en användare som har använt Android i 15 år och nu är 2 månader in i iPhone 13 mini. På android med 8GB minne (senast Samsung S21, Flip3) återvände jag vanligtvis efter en viss tid till den tidigare lanserade applikationen och den var fortfarande laddad i RAM, så den började inte om igen och jag kunde smidigt ta upp var jag slutade. Å andra sidan, även med 8GB minne, "sköt" jag ner alla applikationer en gång i veckan för att rensa RAM-minnet, eftersom systemet började sakta ner med fullt minne. Jag har inga problem med att sakta ner på iPhone, men å andra sidan måste jag säga att när jag använder nästan identiska applikationer, tvärtom, händer det mig regelbundet att när jag återgår till en tidigare lanserad applikation, den laddar helt igen och jag kan inte smidigt fortsätta där jag slutade .
Vilket alternativ är bättre? Svårt att säga... Att döda appar på Android och rensa RAM är en fråga om två klick. Att ladda hela applikationen igen på iPhone är inte så tidskrävande, så det spelar ingen roll så mycket... Självklart skulle det vara idealiskt att ha mer RAM på iPhone och multitasking som på Android :-D
Shit, det är dumt igen. Dels har Android inte gjorts i Java på länge, det är vad Kotlin är till för. Garbage collector har hand om minnet, vilket är det enklaste i iOS, som finns även med sina nackdelar. Det hela är att iOS dödar appar så fort du tar bort dem från skärmen. Detta frigör minne precis som på linux när du skriver kill pid av en process. Det är därför det tar så lång tid att öppna webbläsaren och återgå till det tidigare arbetet. Den här artikeln är en ordagrant översättning av en X år gammal artikel av en iOS-fanatiker utan programmeringskunskaper. Ja, naturligtvis, minneshantering är främst programmerarens ansvar, vad applikationen gör. Om han hostar på det finns det en minnesläcka i världen och pqk du kan ha X Gb minne och det är fortfarande värdelöst. Och i en tid då många applikationer bara är WebView är detta väldigt enkelt, eftersom det själv äter vad det kan. Artikeln är nonsens, skräp.
Android använder inte längre jvm, utan dvm. Och dessutom kompilerar den sedan till en inbyggd körbar fil
Java finns fortfarande i Android.