Capturer une empreinte de la mémoire (vues)

Implémentation de Jetpack Compose

Cette page fournit des informations sur la recherche et le déclenchement de fuites de mémoire propres aux mises en page basées sur des vues. Pour obtenir des informations de base sur la capture et l'analyse des empreintes de mémoire, consultez Capturer une empreinte de la mémoire.

Rechercher des fuites de mémoire

Pour filtrer rapidement les classes susceptibles d'être associées à des fuites de mémoire, ouvrez le menu déroulant des classes et sélectionnez Show activity/fragment leaks (Afficher les fuites d'activité/de fragment). Android Studio affiche les classes qui, selon lui, indiquent des fuites de mémoire pour les instances Activity et Fragment de votre application. Vous pouvez filtrer les types de données suivants :

Sachez que le filtre peut générer des faux positifs dans les cas suivants :

  • Un Fragment a été créé, mais n'a pas encore été utilisé.
  • Un Fragment est mis en cache, mais ne fait partie d'aucun FragmentTransaction.

Pour rechercher des fuites de mémoire plus manuellement, parcourez les listes de classes et d'instances afin de trouver les objets dont la Retained Size (Taille conservée) est importante. Recherchez les éventuelles fuites causées par l'un des éléments suivants :

  • Des références de longue durée à Activity, Context, View, Drawable ou d'autres objets susceptibles de contenir une référence aux conteneurs Activity ou Context.
  • Des classes internes non statiques, telles qu'une Runnable, qui peuvent contenir une Activity instance.
  • Des caches qui maintiennent des objets plus longtemps que nécessaire.

Lorsque vous trouvez des fuites de mémoire potentielles, utilisez les onglets Fields (Champs) et References (Références) dans Instance Details (Détails de l'instance) pour accéder à l'instance ou à la ligne de code source qui vous intéresse.

Déclencher des fuites de mémoire à des fins de test

Pour provoquer des fuites de mémoire à des fins de test dans votre application, vous pouvez les déclencher de l'une des manières suivantes :

  • Faites pivoter l'appareil en mode portrait, puis en mode paysage. Répétez l'opération plusieurs fois dans différents états d'activité. La rotation de l'appareil peut souvent entraîner la fuite d'un objet Activity, Context ou View, car le système recrée l'objet Activity. Si un autre élément de votre application maintient une référence à l'un de ces objets ailleurs, le système ne peut pas récupérer la mémoire correspondante.
  • Basculez entre votre application et une autre application dans différents états d'activité. Par exemple, accédez à l'écran d'accueil, puis revenez à votre application.