Domanda

Vorrei usare qualcosa come CLR Profili .Net 2.0 per vedere gli oggetti che stanno prendendo sempre più spazio nel mucchio in qualsiasi momento (di un ASP.Net processo di lavoro).

Tuttavia, il CLR Profiler solo mi permette di AVVIARE un'applicazione, non collegare a uno già esistente.Presumo che ciò è perché le tracce di allocazioni e GC troppo, ma io non sono molto interessati a questo.Vorrei solo qualcosa che si prende un'istantanea dello stato attuale dell'heap, e mi mostra cosa c'è e come molti oggetti di ogni tipo ci sono, e quanti byte totali sono utilizzati da ogni tipo di oggetto.

Tutte le idee?

È stato utile?

Soluzione

.Net Profiler Di Memoria è esattamente quello che ti serve.Non è gratuito, ma c'è una versione di prova.In realtà ho usato la versione di prova per trovare le perdite sul nostro ultimo progetto.Una caratteristica degna di nota è:

Facilmente identificare le perdite di memoria da la raccolta e la comparazione delle istantanee di .NETTO di memoria

Penso che questo è quello che stai cercando.

Altri suggerimenti

  • Collegare un debugger

cdb -p

  • carico .net estensioni del debugger

.loadby sos mscorwks

  • dump l'heap in un formato CLRProfiler capisce

!TraverseHeap heap.txt

  • staccare debugger

qd

  • carico heap.txt in clrprofiler app

Questo articolo di MSDN parla di come utilizzare il CLR Profiler per confrontare le istanze della pila.Hai ragione che non è possibile allegare CLR Profiler per l'esecuzione di un processo (l'articolo spiega perché), ma, per quel che vale, sembra che si sarà in grado di presto.

Hai guardato RedGates .NET Profiler?

Il suo stato un po ' che l'ho usato, ma io sono del tutto sicuro che si può collegare a qualsiasi CLR processo in qualsiasi momento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top