ants - .NET Herramientas de generación de perfiles de memoria
ants memory profiler (9)
Actualmente estoy evaluando Scitech .NET Memory Profiler 3.1 y ANTS Memory Profiler 5.1 . Intenté el JetBrains uno hace uno o dos años y no era tan bueno como ANTS, así que no me molesté esta vez. Al leer los sitios web, parece que no es tan bueno para los perfiles de memoria como los otros dos.
Tanto ANTS como el generador de perfiles de memoria Scitech tienen características que el otro no posee, por lo que lo mejor dependerá de sus preferencias. En términos generales, el Scitech proporciona información más detallada, mientras que el de ANTS es realmente increíble para identificar el objeto con fugas. En general, prefiero el de ANTS porque es muy rápido para identificar posibles fugas.
Aquí están los principales pros y contras de cada uno de mi experiencia:
Características comunes de ANTS y Scitech .NET Memory Profiler
- Función de análisis en tiempo real
- Excelentes videos instructivos en sus sitios web
- Fácil de usar
- Rendimiento razonable (obviamente más lento que sin el perfilador adjunto, pero no tanto que te frustres)
- Mostrar instancias de objetos con fugas
- Básicamente ambos hacen el trabajo bastante bien
HORMIGAS
- Filtros de un solo clic para encontrar fugas comunes, incluyendo: objetos que solo mantienen vivos los manejadores de eventos, los objetos que están dispuestos pero que todavía están vivos y los objetos que solo se mantienen vivos mediante una referencia de un objeto eliminado. Esta es probablemente la característica más importante de ANTS: encontrar fugas es increíblemente rápido debido a esto. En mi experiencia, la mayoría de las filtraciones se deben a que los manejadores de eventos no están desenganchados y ANTS simplemente te lleva directo a estos objetos. Increíble.
- Gráfico de retención de objetos. Si bien la misma información está disponible en Scitech, es mucho más fácil de interpretar en ANTS.
- Muestra el tamaño con los niños además del tamaño del objeto en sí (pero solo cuando desafortunadamente se selecciona una instancia, no en la lista general de la clase).
- Mejor integración con Visual Studio (haga clic con el botón derecho en el gráfico para saltar al archivo)
Scitech .NET Memory Profiler
- Muestra el seguimiento de la pila cuando se asignó el objeto. Esto es realmente útil para objetos que están asignados en muchos lugares diferentes. Con ANTS es difícil determinar exactamente dónde se creó el objeto filtrado.
- Muestra la cantidad de objetos desechables que no fueron desechados. Si bien no es indicativo de una fuga, sí identifica oportunidades para solucionar este problema y mejorar el rendimiento de la aplicación como resultado de una recolección de basura más rápida.
- Opciones de filtrado más detalladas (se pueden filtrar varias columnas de forma independiente).
- Presenta información sobre el total de objetos creados (incluidos los recogidos basura). ANTS solo muestra estadísticas de objetos "en vivo". Esto hace que sea más fácil analizar y ajustar el rendimiento general de la aplicación (por ejemplo, identificar dónde se crean muchos objetos innecesariamente que no tienen necesariamente fugas).
A modo de resumen, creo que ANTS te ayuda a encontrar lo que está goteando más rápido mientras Scitech proporciona un poco más de detalle sobre el rendimiento general de la memoria de la aplicación y los objetos individuales una vez que sabes qué mirar (por ejemplo, seguimiento de pila en la creación). Si el rastro de la pila y el seguimiento de los objetos desechables no expuestos se añadieran a ANTS, no vería la necesidad de utilizar nada más.
Posible duplicado:
¿Cuáles son algunos buenos perfiladores de .NET?
Estoy buscando buenas herramientas de perfilado de memoria .NET CLR.
Mi requisito clave es que funcione bien con IIS y las aplicaciones de CLR independientes. Idealmente, ¿vería qué objetos se asignan, dónde se asignan y qué tamaño tienen?
¿Alguien tiene alguna buena experiencia con una herramienta en particular que le gustaría recomendar?
Actualmente estoy usando ANTS Profiler . Es una herramienta muy buena con muchas opciones de detalle de perfiles y funciona bien con aplicaciones independientes, servidor de desarrollo e IIS.
Es extraño que CLR Profiler no se menciona aquí todavía. Es gratis y funciona bien.
Tenga cuidado con las múltiples versiones anteriores disponibles en el propio sitio de Microsoft. A partir de noviembre de 2011, la última versión parece ser esta: la última versión (enlace alternativo)
Gran fan de JetBrains Profiler mismo
He usado Aqtime con gran éxito a lo largo de los años. Probé ANTS y otros pero volví a Aqtime porque también desarrollé mucho en código no administrado.
Si te sientes realmente desesperado, puedes usar WinDbg con la biblioteca Son-of-Strike (SOS.DLL) que viene con el framework .Net.
Yo soy el segundo perfil de ANTS .
Además de mostrar todo lo que necesita, dibujará un gráfico simple donde podrá ver qué tarda más en ejecutarse y qué se come la memoria. Cuando haces clic en graphp, te mostrará la línea correspondiente en tu código.
Y me gusta poco las barras de progreso que se ahogan en las líneas de código que tardan demasiado en ejecutarse.
.Net Memory Profiler me ayudó mucho en mi proyecto anterior. No es gratis, pero es muy bueno.
.NET Memory Profiler es una poderosa herramienta para encontrar fugas de memoria y optimizar el uso de memoria en programas escritos en C #, VB.NET o cualquier otro lenguaje .NET.
Dado que todos enumeran las herramientas disponibles, pensé en señalarle la lista completa de los generadores de perfiles para .NET: http://sharptoolbox.com/categories/profilers-debuggers
Allí encontrará las herramientas sugeridas aquí y todas las demás, cada una con una breve descripción de lo que propone.