2008-08-29 12 views
5

Me gustaría utilizar algo así como CLR Profiles en .Net 2.0 para ver qué objetos están ocupando más espacio en el montón en cualquier momento dado (de un proceso de trabajo ASP.Net).CLR Profiler - Adjuntar al proceso existente

Sin embargo, el CLR Profiler solo me permite INICIAR una aplicación, no adjuntarla a una existente. Supongo que esto es porque rastrea las asignaciones y GC también, pero no estoy muy interesado en eso. Me gustaría algo que tome una instantánea del estado actual del montón, y me muestre qué hay allí y cuántos objetos de cada tipo hay, y cuántos bytes están usando cada tipo de objeto.

¿Alguna idea?

Respuesta

3

.Net Memory Profiler es exactamente lo que necesita. No es gratis, pero hay una versión de prueba. En realidad, utilicé la prueba para encontrar filtraciones en nuestro último proyecto. Una característica notable es:

identificar fácilmente las pérdidas de memoria por recopilación y comparación de instantáneas de la memoria .NET

Creo que esto es lo que busca.

0

¿Has mirado RedGates .NET Profiler?

Ha pasado un tiempo desde que lo usé, pero estoy muy seguro de que puede conectarse a cualquier proceso de CLR en cualquier momento.

9
  • asociar un depurador

cdb -p

  • extensiones .NET carga depurador

.loadby sos mscorwks

  • volcar el montón en una formatear el CLRProfiler entiende

! TraverseHeap heap.txt

  • de separación depurador

qd

  • heap.txt carga en la aplicación clrprofiler
1

This article from MSDN habla sobre cómo usar el CLR Profiler libre para compararlo con las instancias de la pila. Tiene razón en que actualmente no puede adjuntar CLR Profiler a un proceso en ejecución (el artículo explica por qué), pero, por lo que sea, parece que podrá hacerlo pronto.

Cuestiones relacionadas