Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 (
) 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.
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.
Zobacz też
Aby uzyskać więcej informacji na temat narzędzia Użycie pamięci programu Visual Studio, zobacz
- Analizowanie użycia pamięci za pomocą debugera
- Analizowanie użycia pamięci bez debugera