La quantité idéale de RAM dont les téléphones ont besoin pour effectuer plusieurs tâches en douceur est un sujet assez débattu. Apple se contente d'une taille plus petite dans ses iPhone, souvent plus utilisable que les solutions Android. Vous ne trouverez pas non plus de gestion de la mémoire RAM sur l'iPhone, alors qu'Android dispose de sa propre fonction dédiée à cela.
Si vous allez, par exemple, dans les téléphones Samsung Galaxy pour Paramètres -> Entretien de l'appareil, vous trouverez ici un indicateur de RAM avec des informations sur la quantité d'espace libre et celle occupée. Après avoir cliqué sur le menu, vous pouvez voir la quantité de mémoire utilisée par chaque application, et vous avez également la possibilité d'effacer la mémoire ici. La fonction RAM Plus se trouve également ici. Cela signifie qu'il récupèrera un certain nombre de Go du stockage interne, qu'il utilisera pour la mémoire virtuelle. Pouvez-vous imaginer quelque chose comme ça sur iOS ?
Les smartphones dépendent de la RAM. Il leur sert à stocker le système d'exploitation, à lancer des applications et également à stocker certaines de leurs données dans le cache et la mémoire tampon. Ainsi, la RAM doit être organisée et gérée de manière à ce que les applications puissent fonctionner correctement, même si vous les déposez en arrière-plan et les rouvrez après un certain temps.
Rapide contre. Java
Mais lors du démarrage d’une nouvelle application, vous devez disposer d’espace libre en mémoire pour la charger et l’exécuter. Si ce n'est pas le cas, la place devra être libérée. Le système mettra donc fin de force à certains processus en cours, tels que les applications déjà démarrées. Cependant, les deux systèmes, à savoir Android et iOS, fonctionnent différemment avec la RAM.
Le système d'exploitation iOS est écrit en Swift et les iPhones n'ont pas réellement besoin de recycler la mémoire utilisée des applications fermées dans le système. Cela est dû à la façon dont iOS est construit, car Apple en a le contrôle total puisqu'il ne fonctionne que sur ses iPhones. En revanche, Android est écrit en Java et est utilisé sur de nombreux appareils, il doit donc être plus universel. Lorsque l'application est terminée, l'espace occupé est restitué au système d'exploitation.
Code natif vs. JVM
Lorsqu'un développeur écrit une application iOS, il la compile directement dans un code pouvant s'exécuter sur le processeur de l'iPhone. Ce code est appelé code natif car son exécution ne nécessite aucune interprétation ni environnement virtuel. Android, en revanche, est différent. Lorsque le code Java est compilé, il est converti en code intermédiaire Java Bytecode, indépendant du processeur. Il peut donc fonctionner sur différents processeurs de différents fabricants. Cela présente d’énormes avantages en termes de compatibilité multiplateforme.
Bien sûr, il y a aussi un inconvénient. Chaque combinaison de système d'exploitation et de processeur nécessite un environnement appelé machine virtuelle Java (JVM). Mais le code natif fonctionne mieux que le code exécuté via la JVM, donc l'utilisation de la JVM augmente simplement la quantité de RAM utilisée par l'application. Les applications iOS utilisent donc moins de mémoire, en moyenne 40 %. C'est également la raison pour laquelle Apple n'a pas besoin d'équiper ses iPhones d'autant de RAM que ses appareils Android.
Je ne suis pas vraiment un expert, mais je vais décrire mon point de vue du point de vue d'un utilisateur qui utilise Android depuis 15 ans et qui utilise maintenant l'iPhone 2 mini depuis 13 mois. Sur Android avec 8 Go de mémoire (plus récemment Samsung S21, Flip3), je revenais généralement après un certain temps à l'application lancée précédemment et elle était toujours chargée dans la RAM, donc elle ne recommençait pas et je pouvais reprendre en douceur là où je laisser derrière soi. D'un autre côté, même avec 8 Go de mémoire, j'ai « abattu » toutes les applications une fois par semaine pour vider la RAM, car le système commençait à ralentir avec la mémoire pleine. Je n'ai pas de problème de ralentissement sur iPhone, mais par contre, je dois dire que lorsque j'utilise des applications quasiment identiques, au contraire, il m'arrive régulièrement que lorsque je reviens sur une application précédemment lancée, il se charge à nouveau complètement et je ne peux pas continuer en douceur là où je m'étais arrêté.
Quelle option est la meilleure ? Difficile à dire… Tuer des applications sur Android et vider la RAM est une question de deux clics. Charger à nouveau l'intégralité de l'application sur l'iPhone ne prend pas beaucoup de temps, donc cela n'a pas tellement d'importance... Bien sûr, l'idéal serait d'avoir plus de RAM sur l'iPhone et d'être multitâche comme sur Android :-D
Merde, c'est encore stupide. D'une part, Android n'a pas été créé en Java depuis longtemps, c'est à cela que sert Kotlin. Le garbage collector est en charge de la mémoire, qui est la plus simple d'iOS, qui existe même avec ses inconvénients. Le problème est qu'iOS tue les applications dès que vous les retirez de l'écran. Cela libère de la mémoire comme sous Linux lorsque vous tapez kill pid d'un processus. C'est pourquoi il faut si longtemps pour ouvrir le navigateur et revenir au travail précédent. Cet article est une traduction textuelle d'un article vieux de X ans rédigé par un fanatique d'iOS sans aucune connaissance en programmation. Oui, bien sûr, la gestion de la mémoire relève principalement de la responsabilité du programmeur, ce que fait l'application. S'il tousse dessus, il y a une fuite de mémoire dans le monde et pqk tu peux avoir X Go de mémoire et ça ne sert toujours à rien. Et à une époque où de nombreuses applications ne sont que WebView, c'est très simple, car elle mange elle-même ce qu'elle peut. L'article est absurde, c'est de la foutaise.
Android n'utilise plus jvm, mais dvm. Et en plus, il le compile ensuite en un exécutable natif
Java est toujours sous Android.