Что такое [Обнаружен цикл] с утечкой памяти?
Visual Studio 2017 Community Edition
Я пытаюсь понять / использовать использование памяти Performance Profiler в том, что, по моему мнению, должно быть утечкой памяти в моем приложении (MVVM с пользовательскими элементами управления). Было сделано три снимка:
- Прежде чем открыть мой подозрительный пользовательский элемент управления, NewProgressNoteView.xaml.
- Во время выполнения пользовательского элемента управления и
- После выхода из NewProgressNoteView.xaml.
Затем я сравнил снимок № 3 со снимком № 1. В полученную таблицу я наложил фильтр "NewProgressNoteView". Ниже приведены результаты расширения экземпляра верхнего Doctor_Desk.Views.NewProgressNoteView. Следует отметить "[Обнаружен цикл]", который кажется подозрительным, но я не знаю, что именно это означает или как использовать эту информацию для устранения утечек памяти? Что мне делать дальше?
Любая помощь будет наиболее ценной.
ТИА.
1 ответ
Что такое [Обнаружен цикл] при просмотре управляемой памяти?
При просмотре снимков кучи в инструментах диагностики Visual Studios у вас есть:
Окно типа объекта, в котором отображаются объекты, хранящиеся в памяти.
Когда вы выбираете конкретный тип объекта, вы можете получить доступ к:
- Пути к корню - не обманывайте себя тем фактом, что эта информация представлена в виде дерева, которое обычно обозначает детей. Paths to root на самом деле показывает родительские объекты, которые ссылаются на выбранный вами объект.
- Ссылочные типы - Показывает дочерние типы, на которые ссылается выбранный объект.
Обе эти вкладки являются ссылочными представлениями, которые помогают отслеживать родительские и дочерние ссылки на объекты, представленные через меню с расширяющимся деревом.
Обнаружен цикл просто означает, что анализатор памяти обнаружил родительскую или дочернюю ссылку, прямо или косвенно ссылающуюся на выбранный вами объект. Поэтому вместо отображения круговой трассировки в виде дерева добавляется тег, обнаруженный циклом.
Это не обязательно плохо или ваша корневая проблема.
Для получения дополнительной информации об анализе памяти и расширенном объяснении ссылочных представлений ознакомьтесь со статьей msdn: https://msdn.microsoft.com/en-us/library/dn342825.aspx.