Udostępnij przez


Analizowanie ścieżki gorącej do katalogu głównego w narzędziu Użycie pamięci

Podczas profilowania kodu platformy .NET w narzędziu profilowania użycie pamięci w programie Visual Studio ścieżka gorąca do katalogu głównego może pomóc w zidentyfikowaniu obiektów przechowywanych na stercie, które powodują problemy z użyciem pamięci. W kontekście użycia pamięci ścieżka gorąca to łańcuch odwołań zidentyfikowany przez profilera wskazujący obiekt główny, który jest potencjalnym źródłem problemów z pamięcią.

Podczas obliczania rozmiaru inkluzywnego obiektu (łączna ilość pamięci przechowywana na stercie przez utrzymywanie obiektu aktywnego) często warto zredukować silnie połączony graf sterty do drzewa. W przeciwieństwie do grafu, węzeł w drzewie ma dowolnie wiele dzieci, ale tylko jednego rodzica. Zamiast rozważać każdą możliwą ścieżkę do korzenia dla obiektu, wybranie najbardziej prawdopodobnej ścieżki do korzenia przy użyciu różnych heurystyk jest zazwyczaj wystarczające, aby znaleźć łańcuch odwołań, który, jeśli zostanie usunięty, sprawi, że obiekt kwalifikuje się do odzyskiwania pamięci. Niektóre z tych heurystyk obejmują nadawanie priorytetu najkrótszej ścieżce do korzenia, określonym typom korzeni oraz ścieżkom kodu użytkownika. Z różnych powodów ta strategia nie zawsze znajduje najbardziej interesujący lub najdłuższy łańcuch przechowywania, ale często zapewnia przydatny punkt wyjścia w badaniu użycia pamięci.

W drzewie Ścieżki do korzenia narzędzia Użycie pamięci, ścieżka z ikoną płomienia (zrzut ekranu przedstawiający ikonę gorącej ścieżki.) jest nazywana gorącą ścieżką do korzenia.

Przykład

Użyj opcji Pokaż tylko gorące ścieżki, aby filtrować widok w okienku Ścieżki do korzenia.

W tym przykładzie istnieje kontrolka WPF (AttachToProcess.Dialog), która przecieka przez powiązanie, które jest ostatecznie zakotwiczone przez AutomationPeer. W filtrowanym widoku ścieżka retencji jest oczywista; widoczna jest tylko bezpośrednia ścieżka do rdzenia.

Zrzut ekranu przedstawiający graf odniesienia Ścieżki do Korzenia. Opcja pokazania tylko gorących ścieżek jest zaznaczona, wyróżniając liniowy łańcuch odwołań.

Po wyłączeniu opcji staje się jasne, że istnieją setki powiązań, a większość ścieżek rozszerzenia prowadzi do martwych punktów, które się cyklicznie powtarzają. Bez wskaźnika wizualnego żmudne jest sortowanie tysięcy potencjalnych ścieżek przechowywania, aby znaleźć przyczynę wycieku. Zrzut ekranu przedstawiający ten sam wykres odwołań ścieżki do korzenia, ale opcja

Zobacz też

Aby uzyskać więcej informacji na temat narzędzia Użycie pamięci programu Visual Studio, zobacz