Поделиться через


Анализ горячего пути к корню в инструменте анализа памяти

При профилировании кода .NET в средстве использовании памяти в Visual Studio горячий путь к корневому может помочь определить объекты, сохраненные в куче, которые вызывают проблемы с использованием памяти. В контексте использования памяти горячий путь — это цепочка ссылок, определяемая профайлером, которая указывает на корневой объект, являющийся потенциальным источником проблем с памятью.

При вычислении инклюзивного размера объекта (общий объем памяти, удерживаемой в куче за счет присутствия объекта), часто полезно преобразовать строго связный граф кучи в дерево. В отличие от графа, узел в дереве имеет произвольно много дочерних элементов, но только один родительский элемент. Вместо того чтобы рассмотреть каждый возможный путь к корню для объекта, выбор наиболее вероятного пути к корню с помощью различных эвристик обычно достаточно, чтобы найти ссылочную цепочку, которая, если удалена, сделает объект пригодным для удаления сборщиком мусора. Некоторые из этих эвристик включают приоритизацию кратчайшего пути к корню, определенные корневые типы и пользовательские пути кода. По разным причинам эта стратегия не всегда находит наиболее интересную или длинную цепочку хранения, но часто предоставляет полезную отправную точку в исследовании использования памяти.

В дереве Путей к Корню инструмента для анализа использования памяти путь со значком пламени (снимок экрана с значком ) называется горячим путем к корню.

Пример

Используйте опцию Показывать только активные пути, чтобы отфильтровать отображение в области Пути к корню.

В этом примере элемент управления WPF (AttachToProcess.Dialog) оказывается утечкой из-за привязки, которая в конечном итоге связана с AutomationPeer. В отфильтрованном представлении путь хранения очевиден; видим только прямой путь к корню.

Снимок экрана: диаграмма ссылок к корневой. Включён параметр

При отключении параметра становится ясно, что существуют сотни привязок, и большинство путей расширения ведут к замкнутым тупикам. Без визуального индикатора трудно разобрать тысячи возможных путей удержания, чтобы найти возможную причину утечки. снимок экрана того же графа ссылок «Пути к корню», но опция «Показывать только горячие пути» не выбрана, и видно много возможных тупиков.

См. также

Дополнительные сведения об инструменте использования памяти Visual Studio см. в статье