Trouver une .NET Fuite de Mémoire?
J'ai créé un exemple de programme, avec 2 boîtes de dialogue. Les deux boîtes de dialogue ont une zone d'image, on appelle pictureBox1.Image.Dispose(); protected override void dispose(bool disposing) et l'autre ne l'est pas.
Lorsque vous exécutez le programme, et utiliser le Gestionnaire des Tâches de regarder l'utilisation de la mémoire, il devient très évident que la boîte de dialogue qui n'appelle pas pictureBox1.Image.Dispose(); fuites de mémoire très mal.
Quelqu'un a une suggestion pour un outil qui permettrait de voir le problème dans une telle façon claire?
Est-il possible de compter allocation/libération de mémoire pour un particulier c# fichier source? Au moins c'était quelque chose que j'étais capable de faire avec le C++.
Avez-vous essayé de le profiler intégré de Visual Studio 2010?
Il ya beaucoup de bons outils pour le profilage de la mémoire. Voici un précédent article: stackoverflow.com/questions/399847/net-memory-profiling-tools
ce fil est mal obsolètes, des outils ont évolué dans le passé 10 ans
OriginalL'auteur user691585 | 2011-04-04
Vous devez vous connecter pour publier un commentaire.
Dans VS2010 essayer le
Analyze
>Launch Performance Wizard
option de menu et choisissez l'option de mémoire.Dans VS2017 il est
Analyze
>Performance Profiler...
Avez-vous transformer sur le "Également recueillir .NET durée de vie des objets de données" option?
OriginalL'auteur Josh M.
Découvrez les Fourmis Profiler: http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/
Il y a un essai gratuit de 14 jours et beaucoup de tutoriels pour vous aider à démarrer.
OriginalL'auteur BrandonZeider
Comme alternative à l'embedded performance profiler de VS, je trouve Jetbrains' DotMemory pratique et facile.
complet, complexe (vous pouvez vraiment creuser et comprendre beaucoup de choses, et trouver rapidement le coupable objets et le code).
[0] https://www.jetbrains.com/dotmemory/
OriginalL'auteur Soleil