2010-04-13 14 views
8

¿Hay alguna buena herramientas gratuitas para perfilar el uso de la memoria en C#?¿Cómo perfilo el uso de la memoria en mi proyecto

Detalles:
Tengo un proyecto de visualización que utiliza colecciones bastante grandes. Me gustaría comprobar qué partes de este proyecto, en el lado del procesamiento de datos, o en el lado de la visualización, uso la mayor parte de la memoria, para poder optimizarla.
Sé que cuando se trata de calcular el tamaño de la colección, el caso es bastante simple y puedo hacerlo por mi cuenta. Pero también hay ciertos elementos por los cuales no puedo estimar el uso de memoria tan fácilmente.
El uso de memoria es bastante grande, por ejemplo, el procesamiento de un archivo de tamaño 35 MB mi programa utiliza un poco más de 250 MB de RAM.

+0

¿Cómo mide que el uso de memoria en el momento por el camino? –

+0

Simplemente comprobando el uso de memoria en el administrador de tareas. Mis compañeros de trabajo me informaron que para grandes conjuntos de datos usa incluso 1.5GB de memoria y algunas veces causa una excepción de "falta de memoria", así que necesito encontrar una manera de optimizarlo. – Gacek

Respuesta

3

He tenido éxito usando RedGate's ANTS profiler. También vale la pena leer Brad Abrams blog donde tiene talked about profiling memory

+0

+1 es una buena pequeña herramienta. Aunque no es barato :) –

+0

@Ed vale cada centavo en mi experiencia, sin embargo; y hay una versión de evaluación que podría usarse para un proyecto a corto plazo –

+0

No ** gratis ** (según lo solicite) aunque –

0

JetBrains DotTrace también es bueno. He usado los productos RedGate y JetBrains y ambos hacen un muy buen trabajo al identificar los cuellos de botella y las fugas.

0

Algunos SKU de Visual Studio incluyen un generador de perfiles. Es gratis si ya tiene uno de esos SKU.

Comenzando con Visual Studio 2005, seguramente encontrará el perfilador incluido en Team Developer y Team Suite. No estoy seguro de si está incluido en otros SKU

+0

No lo es. Y es un generador de perfiles de código. –

2

¡Estoy sorprendido de que nadie haya mencionado el CLR Profiler gratuito de Microsoft!

No conocía esta herramienta hasta hace poco. Tuve un error que hizo que mi programa siguiera asignando más y más memoria. El CLR Profiler puede identificar los "puntos calientes" de asignación de memoria en su programa.

Identifiqué la línea de código responsable de la fuga, dentro de los 15-20 minutos posteriores a la instalación del generador de perfiles.

Básicamente, instrumenta su código y lo ejecuta con algunos perfiles (lo que ralentiza considerablemente su código, creo que 10x-100x son las cifras oficiales).

Ejecuta una cierta carga de trabajo durante un cierto período de tiempo, y luego puede ver qué lugares del código asignaron cuánta memoria (y cuánto se liberó frente a cuánto se retuvo, etc.).

echarle un vistazo en: https://clrprofiler.codeplex.com/

Además, aquí es un tutorial sobre cómo utilizar la herramienta: http://geekswithblogs.net/robp/archive/2009/03/13/speedy-c-part-4-using---and-understanding---clr.aspx

Cuestiones relacionadas