2011-06-21 8 views

Respuesta

1

Como otros perfiladores de memoria sugeridos, Memprofiler es definitivamente el más avanzado (he probado todos los perfiladores .NET existentes). Tiene una prueba de 14 días.

+0

De mirar en el juicio se ve muy bien! –

3

¿Qué tal .NET Memory Profiler de ANTS por ejemplo. Quizás CLR Profiler.

0

Nuestros equipos de QA usan http://www.jetbrains.com/profiler/ para este tipo de cosas aquí cuando nos encontramos con cuellos de botella. Estoy bastante seguro de que te dará una lista de asignaciones por llamada de método. Voy a ir a instalarlo y verificar :)

0

Buena vieja windbg + sos + pdb hará el dumping. En cuanto a la parte "donde en el código fuente fueron creados", es imposible sin instrumentación o inyección.

3

La información no está disponible si crea un volcado de memoria. Para reunir esto, debes monitorear el proceso mientras se está ejecutando. Puede iniciar la aplicación a través de WinDbg y establecer puntos de interrupción en todos los constructores que le interesan (con suerte no desea ver todos y cada uno de los objetos).

Si crea el punto de interrupción, por lo que vuelca la pila, tendrá el punto de creación para el objeto. Sin embargo, tenga en cuenta que los objetos pueden moverse durante GC, lo que dificultará (o incluso imposibilitará) en algunos casos el troquelado de objetos con pilas.

Dado que su pregunta está etiquetada con el rendimiento y el perfil, me consta que desea reducir las asignaciones de memoria. ¿Por qué no simplemente mirar los números de objetos creados (o posiblemente mirar los objetos más grandes creados) mirando el montón? Luego revise el código fuente y descubra dónde se crean tales instancias.

1

Necesita un perfilador de memoria .NET. Estas herramientas le permiten seguir los gráficos de objetos en el montón recogido de basura y pueden ser muy útiles para identificar las fuentes de pérdidas de memoria. Si bien es posible que no necesariamente le indiquen el método en el que se creó un objeto, le indicarán qué instancias de qué clases se aferran a los objetos y le permitirán tomar diferencias de instantáneas del montón de gc. No requieren modificaciones al código fuente. Es posible que desee echar un vistazo a What Are Some Good .NET Profilers?

Cuestiones relacionadas