La plate-forme Android part du principe que la mémoire disponible est une mémoire gaspillée. Android tente d'utiliser toute la mémoire disponible en permanence. Par exemple, le système conserve les applications en mémoire après leur fermeture, afin que l'utilisateur puisse y revenir rapidement. C'est pourquoi les appareils Android s'exécutent souvent avec très peu de mémoire libre (voir la section Allocation de mémoire Android).
Le processus du daemon LMK (Low Memory Killer) Android surveille l'état de la mémoire d'un système Android en cours d'exécution et réagit à une pression de mémoire élevée en arrêtant les processus les moins essentiels pour maintenir les performances du système à des niveaux acceptables.
Pour identifier le processus à arrêter, le daemon LMK utilise un score de mémoire insuffisante appelé oom_adj_score afin de prioriser les processus en cours d'exécution. Les processus avec un score élevé sont arrêtés en premier. Les applications en arrière-plan sont arrêtées en premier, puis les processus système. Le tableau suivant recense les catégories de score LMK, du plus élevé au plus bas. Les éléments de la catégorie ayant obtenu le meilleur score, à la ligne 1, sont supprimés en premier:

Métrique LMK dans Android Vitals
Android Vitals vous permet de surveiller et d'améliorer le taux de LMK de votre application. Android Vitals ne mesure qu'un seul taux de LMK: le taux de LMK perçu par l'utilisateur.
Cette métrique reflète le pourcentage de vos utilisateurs actifs par jour ayant subi au moins un plantage dû à une faible mémoire (LMK). Un LMK perçu par l'utilisateur désigne un plantage dû à une faible mémoire que l'utilisateur a probablement remarqué. Il peut s'agir, par exemple, de LMK quand votre appli affiche une activité ou s'exécute en tant que service de premier plan.
Vous trouverez la métrique dans la section Stability (Stabilité) d'Android Vitals:

Comme pour les autres métriques essentielles, telles que les erreurs ANR et les plantages, vous pouvez filtrer les métriques, les comparer à celles de vos pairs ou surveiller l'évolution de la métrique sur une longue période (jusqu'à trois ans). Les données sont disponibles pour les applications existantes à partir du 28 janvier 2025.

Outils de profilage de la mémoire
Les outils suivants peuvent vous aider à identifier et à diagnostiquer les problèmes de mémoire de différentes manières:
- Découvrez comment votre application alloue de la mémoire au fil du temps. Vous trouverez un graphique en temps réel de la quantité de mémoire utilisée par votre application, du nombre d'objets Java alloués et de la récupération de mémoire.
- Lancez des événements de récupération de mémoire et prenez un instantané du tas de mémoire Java pendant l'exécution de votre application.
- Enregistrez les allocations de mémoire de votre application, inspectez tous les objets alloués et affichez la trace de la pile pour chaque allocation.
Profileur de mémoire Android Studio
Android Studio fournit le Profileur de mémoire en tant que composant du Profileur Android, qui vous aide à identifier les fuites et les pertes de mémoire susceptibles d'entraîner des interruptions, des blocages et même des plantages d'applications. Le profileur affiche un graphique en temps réel de l'utilisation de la mémoire de votre application, et vous permet de capturer une empreinte, de forcer la récupération et de suivre les allocations de mémoire.

Outils de profilage de la mémoire Unity
Si vous utilisez Unity Engine pour créer vos applications, vous pouvez suivre les conseils de profilage de la mémoire Unity. Unity propose deux outils pour analyser l'utilisation de la mémoire dans votre application.
Le premier est le module Memory Profiler, un profileur intégré qui fournit des informations de base sur les endroits où votre application utilise de la mémoire.

Le deuxième outil est le package Profileur de mémoire, qui est un package Unity que vous pouvez ajouter à votre projet. Le package ajoute une fenêtre de profileur de mémoire supplémentaire à l'éditeur Unity. Le Profileur de mémoire vous permet d'analyser l'utilisation de la mémoire dans votre application de manière encore plus détaillée. Vous pouvez stocker et comparer des instantanés pour détecter les fuites de mémoire ou consulter la mise en page de la mémoire pour détecter les problèmes de fragmentation de la mémoire.

Insights sur la mémoire Unreal
Les applications créées par Unreal Engine peuvent utiliser les insights de mémoire Unreal pour afficher des informations détaillées sur l'allocation et la désallocation de mémoire, y compris les balises de mémoire basse densité (LLM) et les piles d'appels associées aux blocs de mémoire.
Le système de requêtes Memory Insights peut trouver des allocations actives à tout moment, identifier les modifications de l'utilisation de la mémoire, localiser les fuites de mémoire et différencier les allocations à court terme des allocations à long terme.
À partir d'UE 5.4, Memory Insights est compatible avec le traçage de la mémoire avec des piles d'appels pour les projets Android.
