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 :
- Instances
Activitydétruites, mais qui sont toujours référencées. Fragmentinstances qui n'ont pas deFragmentManagervalide, mais qui sont toujours référencées.
Sachez que le filtre peut générer des faux positifs dans les cas suivants :
- Un
Fragmenta été créé, mais n'a pas encore été utilisé. - Un
Fragmentest mis en cache, mais ne fait partie d'aucunFragmentTransaction.
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,Drawableou d'autres objets susceptibles de contenir une référence aux conteneursActivityouContext. - Des classes internes non statiques, telles qu'une
Runnable, qui peuvent contenir uneActivityinstance. - 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,ContextouView, car le système recrée l'objetActivity. 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.