La quantità ideale di RAM di cui i telefoni hanno bisogno per il loro multitasking fluido è un argomento piuttosto dibattuto. Apple si accontenta di dimensioni più piccole nei suoi iPhone, che spesso sono più utilizzabili rispetto alle soluzioni Android. Inoltre sull'iPhone non troverete alcuna gestione della memoria RAM, mentre Android ha una funzione dedicata a questo.
Se vai, ad esempio, nei telefoni Samsung Galaxy a registrazione -> Cura del dispositivo, qui troverai un indicatore RAM con informazioni su quanto spazio è libero e quanto è occupato. Dopo aver fatto clic sul menu, puoi vedere la quantità di memoria occupata da ciascuna applicazione e qui hai anche la possibilità di cancellare la memoria. Qui si trova anche la funzione RAM Plus. Il suo significato è che taglierà un certo numero di GB dalla memoria interna, che utilizzerà per la memoria virtuale. Riesci a immaginare qualcosa di simile su iOS?
Gli smartphone fanno affidamento sulla RAM. Serve loro per archiviare il sistema operativo, per avviare applicazioni e anche per archiviare alcuni dei loro dati nella memoria cache e buffer. Pertanto, la RAM deve essere organizzata e gestita in modo tale che le applicazioni possano funzionare senza problemi, anche se le metti in background e le riapri dopo un po'.
Rapido contro Giava
Ma quando si avvia una nuova applicazione, è necessario disporre di spazio libero in memoria per caricarla ed eseguirla. In caso contrario il posto dovrà essere lasciato libero. Il sistema terminerà quindi forzatamente alcuni processi in esecuzione, come le applicazioni già avviate. Tuttavia, entrambi i sistemi, ovvero Android e iOS, funzionano in modo diverso con la RAM.
Il sistema operativo iOS è scritto in Swift e gli iPhone non hanno effettivamente bisogno di riciclare la memoria utilizzata dalle app chiuse nel sistema. Ciò è dovuto al modo in cui è costruito iOS, perché Apple ne ha il pieno controllo poiché funziona solo sui suoi iPhone. Al contrario, Android è scritto in Java e viene utilizzato su molti dispositivi, quindi deve essere più universale. Quando l'applicazione viene terminata, lo spazio occupato viene restituito al sistema operativo.
Codice nativo vs. JVM
Quando uno sviluppatore scrive un'app iOS, la compila direttamente nel codice che può essere eseguito sul processore dell'iPhone. Questo codice è chiamato codice nativo perché non richiede interpretazione o ambiente virtuale per essere eseguito. Android, invece, è diverso. Quando il codice Java viene compilato, viene convertito in codice intermedio Java Bytecode, che è indipendente dal processore. Può quindi funzionare su processori diversi di produttori diversi. Ciò presenta enormi vantaggi per la compatibilità multipiattaforma.
Naturalmente c'è anche uno svantaggio. Ogni combinazione di sistema operativo e processore necessita di un ambiente noto come Java Virtual Machine (JVM). Ma il codice nativo funziona meglio del codice eseguito tramite la JVM, quindi l'utilizzo della JVM aumenta semplicemente la quantità di RAM utilizzata dall'applicazione. Quindi le app iOS utilizzano meno memoria, in media il 40%. Questo è anche il motivo per cui Apple non deve dotare i suoi iPhone di tanta RAM come sui dispositivi Android.
Non sono esattamente un esperto, ma descriverò il mio punto di vista dal punto di vista di un utente che ha utilizzato Android per 15 anni e ora utilizza iPhone 2 mini da 13 mesi. Su Android con 8 GB di memoria (più recentemente Samsung S21, Flip3) di solito tornavo dopo un certo tempo all'applicazione lanciata in precedenza ed era ancora caricata nella RAM, quindi non ricominciava tutto da capo e potevo riprendere senza problemi da dove avevo lasciato fuori. D'altronde, anche con 8 GB di memoria, "abbattevo" tutte le applicazioni una volta alla settimana per liberare la RAM, perché con la memoria piena il sistema iniziava a rallentare. Non ho problemi di rallentamento su iPhone, però devo dire che quando utilizzo applicazioni quasi identiche, anzi, mi capita regolarmente che quando torno su un'applicazione lanciata in precedenza, si carica di nuovo completamente e non riesco a continuare senza problemi da dove avevo interrotto.
Quale opzione è migliore? Difficile dirlo... Eliminare le app su Android e liberare la RAM è questione di due clic. Caricare nuovamente l'intera applicazione sull'iPhone non è così dispendioso in termini di tempo, quindi non ha molta importanza... Certo, l'ideale sarebbe avere più RAM sull'iPhone e multitasking come su Android :-D
Merda, è di nuovo stupido. Per prima cosa, Android non è stato realizzato in Java da molto tempo, ecco a cosa serve Kotlin. Il Garbage Collector è responsabile della memoria, che è la più semplice in iOS, che esiste anche con i suoi svantaggi. Il punto è che iOS uccide le app non appena le togli dallo schermo. Questo libera memoria proprio come su Linux quando digiti kill pid di un processo. Ecco perché ci vuole così tanto tempo per aprire il browser e tornare al lavoro precedente. Questo articolo è una traduzione letterale di un articolo di X anni fa di un fanatico di iOS senza conoscenze di programmazione. Sì, certo, la gestione della memoria è principalmente responsabilità del programmatore, cosa fa l'applicazione. Se ci tossisce sopra, c'è una perdita di memoria nel mondo e pqk puoi avere X Gb di memoria ed è ancora inutile. E in un momento in cui molte applicazioni sono solo WebView, questo è molto semplice, perché esso stesso mangia ciò che può. L'articolo è una sciocchezza, spazzatura.
Android non utilizza più jvm, ma dvm. Inoltre, lo compila in un eseguibile nativo
Java è ancora in Android.