tipos - metodos en c# consola
Averiguar cuánta memoria está siendo utilizada por un objeto en C#? (3)
El CLR Profiler , que proporciona Microsoft de forma gratuita, hace un muy buen trabajo en este tipo de cosas.
Aquí puede descargarse una introducción a todo el perfilador. También el equipo Patterns & Practices reunió algo hace un tiempo detallando cómo usar el generador de perfiles.
Hace un trabajo bastante razonable al mostrarte los diferentes hilos y objetos creados en esos hilos.
Espero que esto arroje algo de luz. ¡Feliz perfil!
¿Alguien sabe de una manera de averiguar cuánta memoria está tomando una instancia de un objeto?
Por ejemplo, si tengo una instancia del siguiente objeto:
TestClass tc = new TestClass()
;
¿Hay alguna manera de averiguar cuánta memoria está tomando la instancia tc
?
El motivo para preguntar es que, aunque C # ha incorporado la administración de la memoria, a menudo tengo problemas para no borrar una instancia de un objeto (por ejemplo, una Lista que realiza un seguimiento de algo).
Hay un par de perfiles de memoria razonablemente buenos (por ejemplo, ANTS Profiler), pero en un entorno de subprocesos múltiples es bastante difícil determinar qué pertenece, incluso con esas herramientas.
Si no está tratando de hacerlo en el código en sí, lo que estoy asumiendo en función de su referencia ANTS, intente echar un vistazo a CLRProfiler (actualmente v2.0). Es gratis y si no te importa la IU simplista, puede proporcionar información valiosa. Le dará una descripción en profundidad de todo tipo de estadísticas. Lo utilicé hace un tiempo como una herramienta para encontrar un puerro de memoria.
Descargue aquí: http://www.microsoft.com/downloads/details.aspx?FamilyId=A362781C-3870-43BE-8926-862B40AA0CD0&displaylang=en
Si desea hacerlo en código, CLR tiene API de creación de perfiles que podría usar. Si encuentra la información en CLRProfiler, ya que usa esas API, también debería poder hacerlo en código. Más información aquí: http://msdn.microsoft.com/de-de/magazine/cc300553(en-us).aspx
(No es tan críptico como usar WinDbg, pero prepárate para hacer un gran esfuerzo en el CLR).
Tengo buenas experiencias con MemProfiler . Le da rastros de pila de cuando se creó el objeto y todos los gráficos de por qué el objeto aún no es basura.