A quantità ideale di RAM chì i telefoni necessitanu per a so multitasking liscia hè un tema assai discutitu. Apple si mette cù una dimensione più chjuca in i so iPhones, chì hè spessu più utilizable cà suluzioni Android. Ùn truverete micca ancu alcun tipu di gestione di memoria RAM in l'iPhone, mentri Android hà a so propria funzione dedicata per questu.
Sè vo vai, per esempiu, in i telefoni Samsung Galaxy à Settings -> Cura di u dispusitivu, Truverete quì un indicatore RAM cù infurmazione nantu à quantu spaziu hè liberu è quantu hè occupatu. Dopu à cliccà nant'à u menù, pudete vede quantu memoria ogni applicazione piglia, è avete ancu l'opzione di sguassà a memoria quì. A funzione RAM Plus hè ancu situata quì. U so significatu hè chì morderà un certu nùmeru di GB da l'almacenamiento internu, chì hà da aduprà per a memoria virtuale. Pudete imaginà qualcosa cusì in iOS?
I telefoni intelligenti si basanu in RAM. Li serve per almacenà u sistema operatore, per lancià applicazioni è ancu per almacenà alcune di e so dati in a memoria cache è buffer. Cusì, a RAM deve esse urganizata è gestita in tale manera chì l'applicazioni ponu curriri liscia, ancu s'è vo sguassate in u sfondate è apre di novu dopu un pocu tempu.
Swift vs. Java
Ma quandu principia una nova applicazione, avete bisognu di avè un spaziu liberu in memoria per carica è eseguisce. S'ellu ùn hè micca u casu, u locu deve esse vacante. Per quessa, u sistema terminarà in forza di certi prucessi in esecuzione, cum'è l'applicazioni chì sò digià iniziate. Tuttavia, i dui sistemi, vale à dì Android è iOS, funzionanu in modu diversu cù RAM.
U sistema operatore iOS hè scrittu in Swift, è l'iPhone ùn anu micca bisognu di riciclà a memoria usata da l'applicazioni chjuse torna in u sistema. Questu hè duvuta à a manera chì iOS hè custruitu, perchè Apple hà u cuntrollu tutale di questu postu chì corre solu nantu à i so iPhones. In cuntrastu, Android hè scrittu in Java è hè utilizatu in parechji dispositi, cusì deve esse più universale. Quandu l'applicazione hè terminata, u spaziu chì hà pigliatu hè tornatu à u sistema operatore.
Codice nativu vs. JVM
Quandu un sviluppatore scrive una app per iOS, a compilanu direttamente in codice chì pò esse esecutatu nantu à u processatore di l'iPhone. Stu codice hè chjamatu codice nativu perchè ùn esige micca interpretazione o ambiente virtuale per eseguisce. Android, invece, hè diversu. Quandu u codice Java hè cumpilatu, hè cunvertitu in u codice intermediu Java Bytecode, chì hè indipendente da u processatore. Si pò dunque eseguisce nantu à i prucessori diffirenti di diversi fabricatori. Questu hà enormi vantaghji per a cumpatibilità cross-platform.
Di sicuru, ci hè ancu un inconveniente. Ogni sistema operatore è cumminazione di processore necessitanu un ambiente chjamatu Java Virtual Machine (JVM). Ma u codice nativu rende megliu cà u codice eseguitu attraversu a JVM, cusì l'usu di a JVM aumenta solu a quantità di RAM utilizata da l'applicazione. Allora l'applicazioni iOS usanu menu memoria, in media 40%. Hè ancu per quessa chì Apple ùn hà micca bisognu di equipà i so iPhones cù tanta RAM quant'è cù i dispositi Android.
Ùn sò micca esattamente un espertu, ma descriveraghju a mo perspettiva da a perspettiva di un utilizatore chì hà utilizatu Android per 15 anni è hè avà 2 mesi in l'iPhone 13 mini. In Android cù memoria di 8 GB (u più recente Samsung S21, Flip3) di solitu tornava dopu un certu tempu à l'applicazione lanciata prima è era sempre caricata in RAM, per quessa ùn hà micca ricominciatu da novu è aghju pussutu ripiglià bè induve aghju. lasciatu. Per d 'altra banda, ancu cù 8GB di memoria, aghju "abbattutu" tutte l'applicazioni una volta à settimana per sguassà a RAM, perchè u sistema hà cuminciatu à rallentà cù a memoria sana. Ùn aghju micca un prublema cù rallentà in l'iPhone, ma d'altra parte, aghju da dì chì quandu si usa applicazioni quasi identiche, à u cuntrariu, mi succede regularmente chì quandu tornu à una applicazione lanciata prima, si carica cumplettamente di novu è ùn possu micca cuntinuà bè induve aghju lasciatu.
Quale opzione hè megliu? Difficile à dì ... Uccide l'applicazioni in Android è sguassate a RAM hè una questione di dui clicchi. Caricà l'appiecazione sana di novu nantu à l'iPhone ùn hè micca tantu tempu, per quessa ùn importa micca tantu... Di sicuru, saria l'ideale per avè più RAM in l'iPhone è multitasking cum'è Android :-D
Merda, hè di novu stupidu. Per una cosa, Android ùn hè micca fattu in Java per un bellu pezzu, hè per quessa Kotlin. Garbage collector hè incaricatu di a memoria, chì hè u più simplice in iOS, chì esiste ancu cù i so disadvantages. U tuttu hè chì iOS uccide l'applicazioni appena li pigliate da u screnu. Questu libera a memoria cum'è in linux quandu scrive kill pid di un prucessu. Hè per quessa chì ci vole tantu tempu per apre u navigatore è torna à u travagliu precedente. Questu articulu hè una traduzzione verbatim di un articulu di X anni da un fanàticu di iOS senza cunniscenze di prugrammazione. Iè, sicuru, a gestione di a memoria hè principalmente a rispunsabilità di u programatore, ciò chì l'applicazione faci. S'ellu tosse nantu à questu, ci hè una fuga di memoria in u mondu è pqk pudete avè X Gb di memoria è hè sempre inutile. È in un tempu quandu parechje applicazioni sò solu WebView, questu hè assai simplice, perchè ellu stessu manghja ciò chì pò. L'articulu hè stupidu, basura.
Android ùn usa più jvm, ma dvm. È in più, poi compila in un eseguibile nativu
Java hè sempre in Android.