Dela via


Analysera frekvent sökväg till rot i verktyget Minnesanvändning

När du profilerar .NET-kod i verktyget Minnesanvändning i Visual Studio kan den heta vägen till roten hjälpa dig att identifiera objekt som behålls i heapminnet och orsakar problem med minnesanvändning. I samband med minnesanvändning är den kritiska sökvägen en referenskedja som profileraren identifierar och som pekar på ett rotobjekt, vilket är en potentiell källa till minnesproblem.

När du beräknar objektets inkluderande storlek (den totala mängden minne som behålls på högen för att hålla objektet vid liv) är det ofta bra att minska den starkt anslutna heapgrafen till ett träd. Till skillnad från en graf har en nod i ett träd godtyckligt många underordnade men bara en enda överordnad. I stället för att överväga varje möjlig sökväg till rot för ett objekt räcker det vanligtvis med att välja den mest sannolika sökvägen till roten med hjälp av olika heuristik för att hitta referenskedjan som, om det tas bort, gör objektet berättigat till skräpinsamling. Några av dessa heuristiker är att prioritera den kortaste sökvägen till rot, vissa rottyper och sökvägar för användarkod. Av olika skäl hittar den här strategin inte alltid den mest intressanta eller längst levande kvarhållningskedjan, men den ger ofta en användbar utgångspunkt i en minnesanvändningsundersökning.

I trädet Paths to Root i verktyget Minnesanvändning kallas sökvägen med flamikonen (Skärmbild som visar ikonen Frekvent sökväg.) den heta sökvägen till roten.

Exempel

Använd alternativet Visa endast heta sökvägar för att filtrera vyn i panelen Sökvägar till rot.

I det här exemplet finns det en WPF-kontroll (AttachToProcess.Dialog) som läcker på grund av en bindning som slutligen är rotad i en AutomationPeer. I den filtrerade vyn är kvarhållningssökvägen uppenbar; endast den direkta sökvägen till roten är synlig.

Skärmbild av referensdiagrammet Sökvägar till rot. Visa endast aktiva sökvägar är markerat, vilket markerar en linjär referenskedja.

Med alternativet inaktiverat blir det tydligt att det finns hundratals bindningar, och de flesta expansionsvägar leder till återvändsgränder den cykeln. Utan den visuella indikatorn är det tidskrävande att sortera igenom tusentals potentiella kvarhållningsvägar för att hitta en möjlig orsak till läckan. Skärmbild av samma Paths to Root-referensdiagram, men

Se även

Mer information om verktyget minnesanvändning i Visual Studio finns i