Supposons que j'ai une application WinForms .NET écrite en C#. Cette application alloue de grandes quantités de mémoire à partir des tas gérés et non gérés. Je peux (relativement) facilement comprendre les détails de l'allocation (qui, quand, combien, etc.) des objets gérés en utilisant des outils comme Red Gate ANTS Profiler (que je n'ai pas utilisé) ou JetBrains dotTrace. Là où je rencontre des problèmes, c'est quand les objets gérés utilisent des ressources natives importantes (Image par exemple, ou de grands objets COM) ou quand j'appelle des bibliothèques tierces non gérées avec des besoins en mémoire importants. Jusqu'à présent, je dois vraiment faire un travail de détective pour comprendre 1) est-ce le code géré ou non géré qui est le cochon de la mémoire et 2) qui utilise une grande partie du tas non géré. La seule technique que j'ai pour le moment est de définir des compteurs de performance dans perfmon qui comparent les tailles de tas managées et non managées, les allocations, etc. Si le tas non géré continue de croître alors que le tas géré est stable, je sais commencez à regarder les bibliothèques non managées et/ou les objets .NET qui consomment des ressources natives.Quels outils et techniques puis-je utiliser pour détecter et isoler l'utilisation de mémoire élevée dans les applications .NET qui font appel à du code important non géré?
Quelle est la meilleure combinaison d'outils et de techniques pour aider les développeurs avec des quantités significatives de code non géré et? MISE À JOUR: Pour être plus clair, j'aimerais savoir comment détecter les problèmes de mémoire (utilisation élevée, fuites) dans le code non géré appelé à partir du code managé. Des produits comme dotTrace, je crois, ne font que suivre les objets gérés.
passez en revue votre code avec ces conseils: [Erreurs de programmation courantes pour les développeurs .NET à éviter?] [1] [1]: http: //stackoverflow.com/questions/380819/common-programming-mistakes-for-net -développeurs-à-éviter – lsalamon