28 votes

Comment détecter les fuites de mémoire dans une application C# ?

Comment détecter les fuites de mémoire dans une application C# ? Quels sont les outils à utiliser ? Quelles sont les meilleures pratiques que vous connaissez ?

28voto

Darin Dimitrov Points 528142

La détection des fuites de mémoire n'est pas une tâche facile et il n'y a pas de réponse définitive à cette question. Vous pouvez utiliser des outils de profilage tels que le Profileur de mémoire ANTS o dotTrace . Vous pouvez également jeter un coup d'œil à la CLR Profiler de Microsoft, qui est gratuit mais plus difficile à utiliser.

2voto

Snarfblam Points 1836

Si vous craignez d'avoir une fuite de mémoire en C#, la première chose à faire est d'identifier le type de fuite en question. Le langage C# est doté d'un système de collecte des déchets, les fuites de mémoire ne sont donc pas courantes. Les sources les plus courantes sont la rétention de références à des objets de grande taille (comme les images), les grands arbres d'objets (comme les collections) ou le fait de ne pas nettoyer les objets non gérés (objets Windows natifs alloués par P/Invoke, poignées de fichiers ou connexions DB). L'élimination des objets IDisposable peut également libérer la mémoire plus rapidement, ce qui permet de réduire l'empreinte mémoire.

1voto

Dark Falcon Points 15609

Les fuites de mémoire sont difficiles à coder en C# à cause du garbage collector. Le GC libère automatiquement les objets à un moment donné lorsqu'il n'y a plus de références. La seule façon de "fuir" de la mémoire est de laisser une référence forte non intentionnelle.

Je soutiens l'appel à dotTrace . Je l'ai utilisé et il fonctionne bien. J'ai également utilisé ANTS, mais je ne l'ai pas apprécié autant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X