Nos confrères d’Android Authority ont répondu à une question que vous vous êtes sûrement déjà posée : pourquoi les appareils Android nécessitent-ils plus de mémoire RAM que les iPhone ? Nous en avons profité pour aller plus loin dans la réflexion, afin de mieux comprendre le fonctionnement d’Android et d’iOS.

De grosses quantités de mémoire RAM sur les appareils Android

Un simple tableau permet de s’en rendre compte, sur les trois dernières années les quantités de mémoire RAM diffèrent beaucoup entre les appareils Android et iOS. Sur Android, les derniers produits sont carrément équipés de 6 à 8 Go de mémoire RAM. Sur iOS, les derniers iPhone n’ont besoin que de 2 Go de RAM, pourtant la fluidité et l’expérience utilisateur sont très similaires à celles que l’on retrouve sur les flagships Android. 

AnnéeiPhoneSamsungOnePlusNexus et Pixel
2016iPhone 7 : 2 Go

iPhone 7 Plus : 3 Go
Galaxy S7 & S7 Edge : 4 Go3T : 6 Go

3 : 6 Go
Pixel & Pixel XL : 4 Go
2015iPhone 6S : 2 Go

iPhone 6S Plus : 2 Go
Galaxy S6 & S6 Edge : 3 Go

S6 Edge+ : 4 Go
2 : 3 ou 4 GoNexus 5X : 2 Go

Nexus 6P : 3 Go
2014iPhone 6 : 1 Go

iPhone 6 Plus : 1 Go
Galaxy S5 : 2 GoOne : 3 GoNexus 6 : 3 Go
2013iPhone 5S : 1 GoGalaxy S4 : 2 GONexus 5 : 2 Go

La mémoire RAM libre ≠ la mémoire RAM disponible

La gestion de la mémoire RAM sur n’importe quel appareil est complexe. Cette complexité est due à l’arrivée du multitâche, qui nécessite d’utiliser un mécanisme de mémoire virtuelle.  Chaque programme (ou application, comme vous voulez) est exécuté dans son propre espace virtuel. Une partie de la mémoire vive est donc réservée au système, l’autre aux applications, et le reste est inoccupé. Ce sont des ressources inutilisées, un gâchis en quelques sortes. Un bon système d’exploitation serait, théoriquement, capable de n’avoir jamais de mémoire RAM libre. La mémoire RAM doit être utilisé constamment, c’est ensuite au système de re-allouer les ressources en fonction des besoins.

Quand vous regardez l’activité de la mémoire RAM sur Android et iOS, vous remarquez donc que cette dernière peut être dans différents états : réservé, active, disponible, mise en cache, cachée, utilisée et ainsi de suite. Bref, première leçon : la quantité de mémoire RAM libre n’est pas une donnée intéressante, c’est pour ça que les applications de type task-killer ont toujours été autant critiquées. Le système est capable d’allouer et re-allouer la mémoire RAM en fonction des besoins du système et des apps.

Il faut donc dissocier : la quantité de mémoire RAM libre n’est pas la même que la mémoire RAM disponible. Le système est capable de gérer cette mémoire RAM intelligemment, pour allouer les ressources à la volée en fonction des besoins. 

 

Première hypothèse : la quantité de mémoire RAM nécessaire pour les apps est différente entre iOS et Android

Une des premières explications pourrait venir de la quantité de mémoire RAM nécessaire pour faire fonctionner les apps. En effet, les apps iOS et Android fonctionnent de façon très différente. Sur Android, par exemple, une bonne partie du code est exécutée par une machine virtuelle. Quand nous observons, pour les mêmes apps, la quantité de mémoire RAM entre les deux systèmes, nous pouvons ainsi observer de vraies différences.

Nous pouvons remarquer plusieurs choses avec ce graphique : la première est que généralement, les apps Android utilisent plus de mémoire RAM que les apps iOS, mais ce n’est pas toujours le cas. Enfin, il y a une limite technique : la quantité de mémoire RAM utilisée par une app ne peut pas excéder 400 Mo. D’ailleurs, Android Authority note des similitudes intéressantes : Android et iOS démarrent avec près de 700 Mo de mémoire RAM disponible pour les apps et les tâches. 

Bref, cette hypothèse explique en partie la quantité différente de mémoire RAM nécessaire entre Android et iOS.

 

Deuxième hypothèse : la gestion de la mémoire RAM n’est pas la même entre iOS et Android

Tout va se jouer maintenant : le média américain a étudié plus en profondeur le fonctionnement du multi-tâche. Sur Android et iOS, il est possible de quitter une application, pour y revenir plus tard. Les deux systèmes affichent d’ailleurs un mode multi-tâche qui permet de retrouver toutes les apps ouvertes. Vous pouvez revenir sur une app ouverte il y a plus d’une semaine, le fonctionnement sera évidemment différent sur chaque appareil. 

La différence entre les deux systèmes se trouve là. L’approche utilisée par Android est d’utiliser un système de compression assez flexible. Pour éviter d’écrire constamment sur la mémoire Flash de l’appareil, beaucoup plus sensible à l’usure que la mémoire RAM, le système va plutôt tenter de compresser les données pour limiter leur espace. Les données sont donc compressées et stockées dans la mémoire vive. L’espace économisé en comprimant les données devient de la RAM disponible pour les autres apps. Une technique similaire est utilisée par macOS depuis OS X 10.9 Mavericks. La compression a néanmoins quelques inconvénient : elle nécessite des cycles de CPU, elle consomme donc de l’énergie, et diffère en fonction des données à compresser. Mais tout ça vaut la peine.

L’autre alternative est de simplement « tuer » les apps, c’est-à-dire les fermer. En utilisant des algorithmes astucieux, le système d’exploitation identifie quelle application doit être tuée et informe l’application en question pour lui permettre d’enregistrer son état. L’objectif étant de pouvoir la redémarrer dans le même état. La ré-ouverture prendra donc plus de temps et nécessitera quelques calculs supplémentaires, l’exemple du navigateur est assez parlant. Si vous rouvrez votre navigateur, il rechargera le dernier site Web visité, par contre il n’aura pas effectué de sauvegarde au préalable de ce site Web (sauf si vous avez un système de cache avancé). 

Bref, iOS utilise un système de compression similaire à Android. Le système d’Apple est d’ailleurs capable de lancer plusieurs apps à la fois, avec une expérience très proche de celle d’Android. Il y a néanmoins une différence importante de comportement, comme vous le remarquerez dans la dernière partie.

À lire sur FrAndroid : Apple iPhone 7 vs Galaxy Note 7, le speed test qui déçoit

Sur Android, la gestion de la mémoire RAM va différer en fonction de votre appareil. C’est ce qui explique des résultats différents dans nos tests de type speedtest avec des configurations similaires. Samsung, par exemple, va tuer plus rapidement les apps – à l’inverse de OnePlus. Résultat : OnePlus exécute une série d’apps et de jeux plus rapidement. La comparaison est la même avec iOS.

Lien Youtube
Chaine Youtube FrAndroid

Cette hypothèse n’explique pas vraiment la quantité de mémoire différente entre iOS et Android. 

 

Troisième hypothèse : la gestion du multi-tâche n’est pas la même entre iOS et Android

Il y a une énorme différence dans la façon dont les applications Android se comportent en arrière-plan par rapport aux applications iOS. Dans iOS, les applications sont suspendues par le système d’exploitation et ne peuvent effectuer aucun travail, enfin très peu. Si une application passe du premier plan à l’arrière plan elle peut demander du temps supplémentaire, ou dans des cas très spécifiques contrôlés par l’OS et par Apple, l’application peut effectuer quelques tâches.  

Pour les applications Android, c’est très différent. Elles peuvent faire n’importe quel type de travail, même en arrière plan. L’OS fournit en bonne quantité de services pour optimiser et contrôler ce comportement, mais ne suspendra pas par défaut les apps. Android permet aux développeurs d’accéder plus finement au comportement de leurs apps en arrière plan. Finalement, c’est un choix de fonctionnement très différent. D’ailleurs, ce fonctionnement -comme nous l’avons déjà dit plus haut- diffère entre les appareils Android. 

Android dispose (heureusement) d’un mécanisme pour notifier les applications que le système a besoin de mémoire RAM, afin que l’application soit incitée à libérer tout ce qui n’est pas extrêmement important : caches, données temporaires et ainsi de suite. Vous avez certainement remarquer les effets de Doze ou de Standby sur l’autonomie de vos appareils. Ces systèmes permettent de réduire la consommation des applications peu utilisées. Les applications qui sont  marquées comme inactives (qui n’ont pas été utilisée depuis plusieurs jours) par Android perdent ainsi la connexion au réseau et ses tâches sont stoppées. Si l’appareil reste inactif pendant une longue période, les applications marquées comme inactives peuvent accéder au réseau une fois par jour. Dès que l’appareil est branché au secteur ou que l’utilisateur prendra la décision d’utiliser à nouveau ces applications, celles-ci regagnent le droit de finir leurs tâches, d’en lancer des nouvelles et de se connecter au réseau.

Cette hypothèse explique donc en grande partie cette différence de quantité de mémoire RAM entre iOS et Android.

 

Au final, des fonctionnements très différents

Malgré les optimisations et les systèmes de gestion d’Android, les appareils Android nécessitent donc une plus grande quantité de mémoire RAM.

Mais cette quantité de mémoire RAM est utile aux apps, qui sont capables de fonctionner en arrière plan pour vous fournir une vraie expérience multi-tâche. Apple de son côté a néanmoins réalisé de gros efforts d’optimisations, et les choix technologiques ont également eu un impact évident sur la quantité de mémoire RAM nécessaire aux apps et aux systèmes, et sur la façon donc le système va gérer tout ça. Cela peut se remarquer lorsque l’on compare les quantités de mémoire RAM nécessaire pour faire tourner les mêmes jeux et apps, mais aussi lorsque l’on compare la gestion de la mise en arrière-plan des apps entre les deux systèmes.