Android Memory Management : comprendre la fonctionnement mémoire d'Android
ven, 26/06/2026 - 12:18
Comprendre la gestion mémoire sur les OS et donc les applications n'est jamais simple. De nombreux mécanismes sont actionnés et diffèrent d'un OS à un autre. Mais derrière un OutOfMemoryError ou une fermeture forcée par l'OS d'une app en arrière-plan, c'est que le gestionnaire mémoire a réagi.
Règle n°1 : chaque app Android s'exécute dans sa propre sandbox Quand une app Android se lance, l'OS crée un processus, une instance Android Runtime, avec son garbage collector, son espace mémoire. Bref, tout un ensemble de mécanismes que l'utilisateur ne voit jamais. Cette isolation évite un crash des autres apps ou pire, de l'OS proprement dit.
Règle n°2 : Android s'appuie sur le noyau Linux et une partie du comportement mémoire hérite du noyau et non d'Android.
Règle n°3 : chaque processus est dans un espace d'adressage mémoire virtuel et un adressage mémoire physique. Le noyau s'occupe de mapper les pages mémoire. La mémoire est paginée en blocs de taille fixe. Historiquement, Android utilise une taille de page mémoire de 4 Ko mais l'OS est passé à 16 Ko.
Dans les processus Android, il y a un processus spécial qui démarre avec l'OS. Il sert de processus parent à toutes les applications. Techniquement, Zygote est une machine virtuelle ART résidant en mémoire. Quand une app se lance, l'OS utilise le fork(). Bref, une app Android ne démarre pas à froid. La création du processus dédié se fait depuis Zygote qui est actif et chargé.
Si Zygote n'était pas là, il faudrait que l'application initialise la JVM, charge les classes nécessaires, initialise le garbage collector et s'occupe aussi du JIT...
Android Runtime est une couche importante car c'est elle qui permet d'exécuter les applications dans un espace isolé. Il supporte les apps Java et Kotlin. Il alloue la mémoire aux objets, exécute le garbage collector, récupère la mémoire non utilisée, etc. Bref , ART est une pièce centrale dans la gestion mémoire d'Android.
Quand une app est arrêtée de force par l'OS , c'est qu'il y a sans doute un manque de mémoire disponible et l'OS doit faire quelque chose. Les processus sont classés par importance : l'app en avant-plan, les apps en arrière-plan, etc. Android peut alors arrêter un processus pour libérer la mémoire liée et redémarrer à l'état de l'arrêt s'il est sollicité.

Présentation de Zygote : https://medium.com/@professionalprovishal/zygote-the-secret-engine-behind-every-android-app-9c3345f0f54e
Overview of memory management : https://developer.android.com/topic/performance/memory-overview
Source de l'article : https://medium.com/@tahn98/android-development-android-memory-management-explained-from-zygote-to-garbage-collection-69d9e470a34a

