Question

Je voudrais utiliser quelque chose comme CLR Profils .Net 2.0 pour voir ce que les objets prennent plus d'espace dans le tas à un moment donné (d'un ASP.Net processus de travail).

Cependant, le CLR Profiler uniquement me permet de DÉMARRER une application, s'attache pas à un existant.Je suppose que c'est parce qu'il suit les allocations et GC trop, mais je ne suis pas très intéressé par ce que.Je voudrais juste quelque chose qui prend un instantané de l'état actuel de la tas, et me montre ce qui est là et combien d'objets de chaque type il y a, et du nombre total d'octets sont utilisés par chaque type d'objet.

Des idées?

Était-ce utile?

La solution

.Net Memory Profiler est exactement ce dont vous avez besoin.Ce n'est pas gratuit mais il y a une version d'essai.En fait j'ai utilisé le procès pour trouver les fuites sur notre dernier projet.Une caractéristique remarquable est:

Facilement identifier les fuites de mémoire par la collecte et la comparaison des instantanés de .NET mémoire

Je pense que c'est ce que vous cherchez.

Autres conseils

  • Attacher un débogueur

cdb-p

  • de la charge .net extensions de débogueur

.loadby sos mscorwks

  • dump le tas dans un format que l'CLRProfiler comprend

!TraverseHeap heap.txt

  • détacher débogueur

qd

  • charge heap.txt dans le clrprofiler app

Cet article à partir de MSDN les pourparlers sur la façon d'utiliser le libre CLR Profiler à comparer aux instances de la pile.Vous avez raison, vous ne pouvez actuellement pas joindre CLR Profiler à l'exécution d'un processus (l'article explique pourquoi), mais, pour ce que ça vaut, il semble que vous serez en mesure de rapidement.

Avez-vous regardé RedGates .NET Profiler?

Son été un moment depuis que je l'ai utilisé, mais je suis faily sûr que vous pouvez joindre à tout CLR processus à tout moment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top