Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Comment utiliser le débogueur du graphique de mémoire pour identifier les cycles de conservation dans les applications MVVMCross


Comment utiliser le débogueur du graphique de mémoire pour identifier les cycles de conservation dans les applications MVVMCross


L'utilisation du débogueur de graphe de mémoire dans Xcode est un moyen efficace d'identifier les cycles de conservation dans les applications MVVMCross. Voici un guide étape par étape sur la façon de le faire:

Introduction au débogueur du graphique de mémoire

Le débogueur de graphe de mémoire est un outil puissant de Xcode qui aide les développeurs à identifier les fuites de mémoire et à conserver les cycles en visualisant les relations d'objet en mémoire. Il fournit un instantané de l'état de mémoire actuel, montrant quels objets sont conservés et comment ils sont référencés.

Étapes pour identifier les cycles de conservation

1. Exécutez votre application: Commencez par exécuter votre application MVVMCross dans Xcode. Assurez-vous que vous testez la partie spécifique de l'application où vous soupçonnez qu'un cycle de conservation pourrait se produire.

2. Ouvrez le débogueur du graphique de mémoire: une fois votre application en cours d'exécution, ouvrez le débogueur du graphique de mémoire en cliquant sur le bouton à trois nœuds situé entre le débogueur visuel et les boutons du simulateur d'emplacement dans la barre d'outils de Xcode. Cela capturera un instantané de mémoire de l'état actuel de votre application.

3. Analyser l'instantané de la mémoire: Dans le panneau de gauche du débogueur de graphique de mémoire, vous verrez une liste d'objets actuellement en mémoire, ainsi que le nombre d'instances de chaque classe. Recherchez des objets qui ne devraient pas être là ou qui ont un nombre inattendu d'instances.

4. Identifiez les cycles de conservation: sélectionnez un objet dans le panneau de gauche pour afficher son graphique de référence. Le graphique montrera de fortes références comme des lignes audacieuses et des références inconnues (qui pourraient être faibles ou fortes) sous forme de lignes gris clair. Un cycle de conservation est indiqué par une boucle dans le graphique où les objets se référent mutuellement d'une manière qui les empêche d'être traités.

5. Naviguez sur les graphiques d'objets: Pour retrouver la source d'un cycle de conservation, vous devrez peut-être naviguer dans plusieurs graphiques d'objets. Commencez par l'objet divulgué et suivez les références vers l'arrière pour trouver l'objet parent qui le conserve.

6. Inspectez les détails de l'objet: lorsque vous cliquez sur un nœud dans le graphique, un panneau d'inspection fournira des informations détaillées sur l'objet, y compris ses propriétés et ses relations. Cela peut vous aider à comprendre pourquoi un objet est conservé.

7. Répétez les flux de noyau: pour confirmer un cycle de conservation, répétez le flux de noyau ou la fonctionnalité dans votre application plusieurs fois, en prenant des instantanés de mémoire après chaque itération. Si le nombre d'instances d'un objet particulier augmente au fil du temps, cela pourrait indiquer un cycle de conservation.

8. Corrigez le cycle de conservation: une fois que vous avez identifié la source du cycle de conservation, vous pouvez le réparer en modifiant les références solides à des références faibles ou non. Par exemple, dans les fermetures, utilisez «[moi faible]« pour éviter de se capturer fortement ».

Scénarios de cycle de conservation communs dans MVVMCROSS

Dans les applications MVVMCross, les cycles de conservation se produisent souvent en raison de fortes références entre les modèles de vue et les vues ou en raison de la fermeture capturant fortement des modèles de vue ou des vues. Par exemple, si un modèle de vue contient une référence forte à une vue et que la vue retient également une forte référence au modèle de vue, aucun ne peut être traité.

Pour éviter de tels cycles, assurez-vous que vos modèles de vue sont correctement nettoyés lorsque les vues sont rejetées. Utilisez des méthodes de cycle de vie fournies par MVVMCROSS, telles que `` disparu () ', pour libérer des ressources et briser les références inutiles.

En suivant ces étapes et en comprenant comment les relations d'objet sont visualisées dans le débogueur du graphique de mémoire, vous pouvez identifier et réparer efficacement les cycles de conservation dans vos applications MVVMCross.

Citations:
[1] https://doordash.engineering/2019/05/22/ios-memory-leaks-and-retain-cycle-dection-using-xcodes-memory-graph-debugger/
[2] https://careersatdoordash.com/blog/ios-memory-leaks-and-renain-cycle-dection-using-xcodes-memory-graph-debugger/
[3] https://www.tothenew.com/blog/memory-leak-with-memory-graph-debugger/
[4] https://forums.developer.apple.com/forums/thread/112268
[5] https://www.mvvmcross.com/mvvmcross-5-release/
[6] https://www.dnonnywals.com/using-xcodes-memory-graph-to-find-memory-leaks/
[7] https://moldstud.com/articles/p-swift-memory-management-tips-for-retain-cycle-issues
[8] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[9] https://diggingInthecode.wordpress.com/2016/06/14/xamarin-performance-advices/