dotMemory es un perfilador de memoria de .NET que se puede lanzar directamente desde Visual Studio, utilizarse como complemento en JetBrains Rider, o emplearse como una herramienta independiente.
dotMemory le permite perfilar aplicaciones basadas en cualquier versión compatible de .NET Framework, .NET Core, .NET, aplicaciones web ASP.NET, IIS, IIS Express, servicios Windows, aplicaciones de Universal Windows Platform, etc. En macOS y Linux, dotMemory solo puede usarse como parte de JetBrains Rider o como un perfilador de línea de comando.
dotMemory le permite importar volcados de memoria Windows en bruto obtenidos mediante el Administrador de tareas o Explorador de procesos, y analizarlos como instantáneas de memoria regulares. Así, podrá aprovechar las inspecciones automáticas, los diagramas de retención y otras funcionalidades sofisticadas de dotMemory.
Entender cómo su aplicación utiliza la memoria es clave para poder optimizarla con éxito. En esta vista, la jerarquía de los dominadores (objetos que retienen en exclusividad otros objetos en la memoria) se muestra en un gráfico de proyección solar.
Con un rápido vistazo al gráfico podrá saber qué objetos son cruciales para su aplicación y evaluar las estructuras más grandes: cuanta más memoria retiene un dominador, mayor su ángulo central.
Para obtener el camino de retención de un dominador específico, haga clic en su arco correspondiente. Si hace doble clic sobre un dominador, ampliará el gráfico para ver en más detalle los objetos retenidos por este dominador.
dotMemory está integrado con JetBrains Rider, lo que le permite realizar un seguimiento de la asignación de memoria en tiempo real, un análisis de la asignación para intervalos de tiempo específicos y mucho más. También puede iniciar una sesión de perfilado de memoria desde Visual Studio siempre que sea necesario.
Más adelante, podrá navegar desde un tipo en un conjunto de objetos dotMemory hacia la declaración del tipo en Visual Studio.
A veces podría interesarle tomar instantáneas sólo cuando una condición específica sea verdadera. Es por esto que dotMemory permite automatizar el proceso de obtención de instantáneas. Esto es especialmente útil cuando el consumo de memoria de su aplicación aumenta drásticamente, o cuando tomar una instantánea manualmente resulta complicado. Simplemente defina una condición particular y haga que se tomen instantáneas automáticamente a partir de que esta se cumpla.
Supervise la memoria utilizada por su aplicación, obtenga instantáneas y suéltelas para compararlas con un solo clic.
Examine objetos del montón desde múltiples vistas. ¿Quiere saber cómo se relacionan los objetos entre si? ¿A qué objetos hacen referencia y a través de qué campos? ¿Quiere saber qué llamadas crearon estos objetos? ¡No hay problema! dotMemory tiene una vista para todo.
Comparar dos instantáneas es la principal forma de encontrar objetos que causan una fuga de memoria. Use la vista de comparación para descubrir cuántos objetos se crearon entre instantáneas y cuántos objetos se recopilaron.
Si bien el profiling de memoria tiene una reputación de ser solo para profesionales, la exclusiva interfaz de dotMemory baja dramáticamente la barrera de entrada y simplifica el profiling de memoria. Simplemente debe moverse de arriba abajo, desde un conjunto de objetos hasta instancias particulares, hasta que identifique la causa raíz de los problemas de memoria.
Las asignaciones excesivas y recopilaciones de basura pueden implicar una sobrecarga significativa en la gestión de la memoria. Use la vista de tráfico para entender qué objetos se crean/recolectan de forma más intensiva en su aplicación y qué funciones causan este tráfico de memoria.
dotMemory escanea automáticamente su instantánea en busca de tipos comunes de problemas de memoria, tales como cadenas duplicadas, vectores dispersos, manejadores de eventos con fugas o vinculaciones WPF. Esas inspecciones pueden ser un gran punto de partida para analizar una instantánea si no sabe por dónde empezar.
dotMemory incluye el perfilador de línea de comandos dotMemory.exe. Use esta herramienta para automatizar el profiling: haga del profiling parte de sus builds de integración continua o simplemente acelere sus rutinas de profiling (p.ej., si tiene que perfilar periódicamente la misma aplicación y no desea iniciar la interfaz de usuario de dotMemory cada vez).
Prueba gratuita de 30 días disponible