Belangrijkste pad naar wortel analyseren in het Geheugengebruik-hulpprogramma
Wanneer u .NET-code profileert met de Profileringstool voor Geheugengebruik in Visual Studio, kan het hete pad naar de bron u helpen bij het identificeren van objecten die op de heap worden vastgehouden en die geheugengebruiksproblemen veroorzaken. In de context van geheugengebruik is het dynamisch pad een referentieketen die wordt geïdentificeerd door de profiler die verwijst naar een hoofdobject dat een potentiële bron van geheugenproblemen is.
Bij het berekenen van de inclusieve grootte van een object (de totale hoeveelheid geheugen die op de heap wordt bewaard door het object in leven te houden), is het vaak handig om de sterk verbonden heapgrafiek in een boom te verminderen. In tegenstelling tot een grafiek heeft een knoop in een boom willekeurig veel kinderen, maar slechts één ouder. In plaats van elk mogelijk pad naar de hoofdmap voor een object te overwegen, is het kiezen van het meest waarschijnlijke pad naar de hoofdmap met behulp van verschillende heuristieken meestal voldoende om de referentieketen te vinden die, indien verwijderd, het object in aanmerking komt voor garbagecollection. Sommige van deze heuristieken omvatten het prioriteit geven aan het kortste pad naar de root, bepaalde roottypes en gebruikerscodepaden. Om verschillende redenen vindt deze strategie niet altijd de meest interessante of langste bewaarketen, maar het biedt vaak een nuttig uitgangspunt in een onderzoek naar geheugengebruik.
In de paden naar root boomstructuur van het hulpprogramma Geheugengebruik, wordt het pad met het vlampictogram () het hot path naar root genoemd.
Voorbeeld
Gebruik de Alleen belangrijke paden weergeven optie om het overzicht in het deelvenster Paden naar hoofdmap te filteren.
In dit voorbeeld is er een WPF-besturingselement (AttachToProcess.Dialog
) dat wordt gelekt via een binding die uiteindelijk is geroot door een AutomationPeer
. In de gefilterde weergave is het bewaarpad duidelijk; alleen het directe pad naar de wortel is zichtbaar.
Als de optie is uitgeschakeld, wordt het duidelijk dat er honderden bindingen zijn en dat de meeste uitbreidingspaden leiden tot dode uiteinden die cyclussen vormen. Zonder de visuele indicator is het tijdrovend om duizenden potentiële retentiepaden te sorteren om een mogelijke oorzaak van het lek te vinden.
Zie ook
Zie voor meer informatie over het hulpprogramma Geheugengebruik van Visual Studio