c# c++ visual-studio-2010 memory-leaks memory-management

c# - Herramientas para fugas de memoria en.NET ejecutable



c++ visual-studio-2010 (3)

Algunos otros ya han publicado buenos enlaces a los perfiladores, el perfilador de redgate es particularmente bueno.

Aquí hay un enlace a un buen artículo sobre cómo encontrar fugas en .Net:

http://blogs.msdn.com/b/ricom/archive/2004/12/10/279612.aspx

Aquí hay un gran blog: el autor es un ingeniero de soporte en MS (estas personas son realmente buenos programadores que trabajan en windebug todo el día para encontrar problemas). Muchos de sus artículos tratan sobre cómo rastrear las pérdidas de memoria. La mayoría de sus ejemplos son asp.net, pero la mayoría de las técnicas también deberían aplicarse a las aplicaciones de Windows:

http://blogs.msdn.com/b/tess/archive/2006/01/23/516139.aspx

Además, tenga en cuenta que es posible que no tenga una fuga real. Por diseño, el recolector de basura de .Net no libera la memoria de inmediato. Hace colecciones periódicas que se desencadenan por varios eventos (no creo que MS haya publicado una lista completa de las cosas que harán que el recolector de basura se dispare). Sé que uno de los factores desencadenantes son las condiciones de memoria baja, y otro desencadenador puede ser una asignación de memoria. Si nada lo activa, el GC no se acumulará.

Eso significa que puede iniciar una aplicación Winform .net, dejar que se coma un montón de memoria (y luego soltarla), y luego dejarla reposada toda la noche. Si la computadora ha estado inactiva durante todo el tiempo, es posible que el GC no se haya disparado y que la aplicación aún posea mucha memoria. Cuando algo sucede para desencadenar la recolección, la memoria se liberará. Es muy común que las personas informen que las aplicaciones .net parecen ser lentas para liberar memoria como resultado de este comportamiento.

Adelante y perfil - puede tener una fuga, pero también tenga en cuenta que esto podría ser un comportamiento por diseño. De cualquier manera, buena suerte!

Posible duplicado:
¿Cuáles son algunos buenos perfiladores de .NET?

Estoy tratando de probar una aplicación en Windows para detectar fugas de memoria. He analizado alternativas a Linux (por ejemplo, Valgrind) y estoy buscando una herramienta similar para Windows. El problema con .Net es que la memoria no se libera de inmediato como en Linux.

Mi conocimiento de .Net es limitado, así que mi problema es que me gustaría utilizar una herramienta que encontraría pérdidas de memoria para un ejecutable de Windows .Net. Idealmente, el programa debería ser capaz de detectar cualquier pérdida de memoria mientras uso la aplicación. ¿Alguien sabe de tal herramienta o tiene alguna sugerencia para resolver este problema?

Gracias por cualquier ayuda de antemano.

Gracias por las respuestas. ¿Alguien puede decirme si alguno de estos programas le permite ejecutar desde la línea de comandos y generar informes de pérdida de memoria en un archivo de texto?

Gracias


Hemos probado muchos de los memoryperders para .NET y hemos llegado a la conclusión de que el .NET memory profiler es el mejor actualmente en el mercado con una buena combinación para facilidad de uso, cantidad de datos disponibles y rendimiento.


Redgate tiene un buen perfilador de memoria que puedes descargar aquí. Incluso viene con una versión de prueba de 14 días. Lo he usado y es muy bueno.