Análisis de la ruta de acceso activa a la raíz en la herramienta Uso de memoria
Al generar perfiles del código .NET en la herramienta de análisis de uso de memoria en Visual Studio, la ruta de acceso activa a la raíz puede ayudarle a identificar los objetos retenidos en el montón que están causando problemas de uso de memoria. En el contexto del uso de memoria, la ruta crítica es una cadena de referencia identificada por el perfilador que apunta a un objeto raíz que es un posible origen de problemas de memoria.
Al calcular el tamaño inclusivo de un objeto (la cantidad total de memoria conservada en el montón manteniendo activo el objeto), a menudo resulta útil reducir el gráfico de montón conectado fuertemente en un árbol. A diferencia de un grafo, un nodo de un árbol puede tener arbitrariamente muchos hijos, pero solo un único padre. En lugar de considerar cada ruta de acceso posible a la raíz de un objeto, elegir la ruta de acceso más probable a la raíz mediante varias heurísticas suele ser suficiente para encontrar la cadena de referencia que, si se quita, hará que el objeto sea elegible para la recolección de basura. Algunas de estas heurísticas incluyen priorizar la ruta de acceso más corta al nodo raíz, ciertos tipos de nodos raíz y rutas de acceso de código de usuario. Por varias razones, esta estrategia no siempre encuentra la cadena de retención más interesante o más larga, pero a menudo proporciona un punto de partida útil en una investigación de uso de memoria.
En el árbol Rutas de acceso a la raíz de la herramienta Uso de memoria, la ruta de acceso con el icono de llama () se denomina "ruta de acceso activa a la raíz".
Ejemplo
Use la opción Mostrar solo rutas de acceso activas para filtrar la vista en el panel Rutas a la Raíz.
En este ejemplo, hay un control WPF (AttachToProcess.Dialog
) que se filtra a través de un enlace que, en última instancia, se basa en AutomationPeer
. En la vista filtrada, la ruta de retención es obvia; solo la ruta de acceso directa a la raíz está visible.
Con la opción deshabilitada, queda claro que hay cientos de enlaces, y la mayoría de las rutas de expansión conducen a los extremos fallidos de ese ciclo. Sin el indicador visual, es tedioso clasificar miles de posibles rutas de retención para encontrar una posible causa de la fuga.
Consulte también
Para obtener más información sobre la herramienta Uso de memoria de Visual Studio, consulte