Delen via


Geheugengebruik analyseren met behulp van het hulpprogramma .NET-objecttoewijzing

U kunt zien hoeveel geheugen uw app gebruikt en welke codepaden het meeste geheugen toewijzen met behulp van het hulpprogramma .NET-objecttoewijzing.

Nadat u het hulpprogramma hebt uitgevoerd, ziet u de uitvoeringspaden van de functie waar objecten worden toegewezen. Vervolgens kunt u terug traceren naar de wortel van de aanroepstructuur die het meeste geheugen in beslag neemt.

Zie Case study: Beginnersgids voor het optimaliseren van codevoor een zelfstudie waarin wordt getoond hoe u de prestaties kunt verbeteren met behulp van het hulpprogramma .NET Object Allocation.

Installatie

  1. Selecteer Alt+F2 om de Performance Profiler in Visual Studio te openen.

  2. Schakel het selectievakje .NET Objecttoewijzing bijhouden in.

    schermopname van het hulpprogramma Dotnet Object Allocation Tracking geselecteerd.

    schermopname van het hulpprogramma Dotnet Object Allocation Tracking geselecteerd.

  3. Selecteer de knop Start om het hulpprogramma uit te voeren.

    Als u de optie Starten met verzameling gepauzeerd inschakelt voordat u de profiler start, worden de gegevens pas verzameld wanneer u de knop Record selecteert in de diagnostische sessie weergave.

  4. Nadat het hulpprogramma is gestart, doorloopt u het scenario dat u in uw app wilt profilen. Selecteer vervolgens Verzameling stoppen of sluit uw app om uw gegevens te bekijken.

    Schermopname van het venster waarin verzameling wordt gestopt.

    Schermopname van het venster met Verzameling stoppen.

  5. Selecteer het tabblad Toewijzing. Geheugentoewijzingsgegevens die er ongeveer als volgt uitzien, worden weergegeven.

    Schermopname van het tabblad Toewijzing.

    Schermopname van het tabblad Toewijzing.

U kunt nu de geheugentoewijzing van de objecten analyseren.

Tijdens het verzamelen kan het hulpprogramma voor bijhouden de geprofileerde app vertragen. Als de prestaties van het hulpprogramma voor bijhouden of de app traag zijn en u niet elk object hoeft bij te houden, kunt u de steekproeffrequentie aanpassen. Hiervoor selecteert u het tandwielsymbool naast de tracker op de profiler-samenvattingspagina.

Schermopname van instellingen voor het hulpprogramma Dotnet Allocation.

Schermopname van instellingen voor het hulpprogramma Dotnet Allocation.

Pas de steekproeffrequentie aan op de gewenste snelheid. Deze wijziging helpt de prestaties van uw app tijdens het verzamelen en analyseren te versnellen.

Schermopname van een aangepast steekproefpercentage.

Schermopname van een aangepast steekproefpercentage.

Zie Profiler-instellingen optimaliserenvoor meer informatie over het efficiënter maken van het hulpprogramma.

Inzicht in uw gegevens

In de volgende grafische weergave toont de bovenste grafiek het aantal live-objecten in uw app. De onderste Object delta grafiek toont de percentagewijziging van app-objecten. Rode balken geven weer wanneer de vuilnisophaling heeft plaatsgevonden.

schermopname van grafiek voor het hulpprogramma Dotnet Allocation.

schermopname van grafiek voor het hulpprogramma Dotnet Allocation.

U kunt de gegevens in tabelvorm filteren om alleen activiteit voor een opgegeven tijdsbereik weer te geven door een tijdsbereik te selecteren. Wanneer u dit doet, is de informatie die op de tabbladen wordt weergegeven, afgestemd op het gefilterde tijdsbereik.

Schermopname van gefilterde grafiek van de Dotnet-toewijzingstijd.

Schermopname van gefilterde grafiek van de Dotnet-toewijzingstijd.

U kunt ook in- of uitzoomen op de grafiek.

Toewijzing

In de weergave Toewijzing ziet u de locatie van objecten die geheugen toewijzen en hoeveel geheugen deze objecten toewijzen.

schermopname van de uitgevouwen toewijzingsweergave.

schermopname van de uitgevouwen toewijzingsweergave.

De volgende informatie wordt weergegeven in de weergave Toewijzing:

  • De kolom Type is een lijst met klassen en structuren die geheugen in beslag nemen. Dubbelklik op een type om de backtrace weer te geven als een omgekeerde aanroepstructuur. In de toewijzingsweergave alleen ziet u items in de geselecteerde categorie die geheugen in beslag nemen.

  • In de kolom Toewijzingen wordt het aantal objecten weergegeven dat geheugen in beslag neemt binnen een bepaald toewijzingstype of een bepaalde functie. Deze kolom wordt alleen weergegeven in de Allocation, Call Treeen Functions weergaven.

  • De kolommen Bytes en Gemiddelde Grootte (Bytes) worden niet standaard weergegeven. Als u ze wilt weergeven, klikt u met de rechtermuisknop op de Type of Toewijzingen kolom en selecteert u vervolgens de opties Bytes en Gemiddelde grootte (bytes) om ze aan de grafiek toe te voegen.

    De twee kolommen zijn vergelijkbaar met totaal (toewijzingen) en zelf (toewijzingen), maar ze geven de hoeveelheid in beslag genomen geheugen weer in plaats van het aantal objecten dat geheugencapaciteit gebruikt. Deze kolommen worden alleen weergegeven in de weergave Toewijzing.

  • In de kolom modulenaam wordt de module weergegeven die de functie of het aanroepende proces bevat.

Al deze kolommen kunnen worden gesorteerd. Voor de type en modulenaam kolommen kunt u items alfabetisch sorteren in oplopende of aflopende volgorde. Voor Toewijzingen, Bytes en Gemiddelde Grootte (Bytes), kunt u items sorteren op oplopende of aflopende numerieke waarde.

Symbolen

De volgende symbolen worden weergegeven in de tabbladen Toewijzing, Oproepstructuuren Functies:

  • Het waardetypesymbool - Een waardetype zoals een geheel getal

  • Het verzamelingsymbool van het waardetype - Een verzameling van het waardetype, zoals een matrix met gehele getallen

  • Het verwijzingstypesymbool - een verwijzingstype zoals string

  • Het verzamelingsymbool verwijzingstype - Een verzameling met verwijzingstypen, zoals een matrix met tekenreeksen

Oproepstructuur

In de weergave Oproepstructuur worden de functie-uitvoeringspaden weergegeven die objecten bevatten met een hoog geheugengebruik.

Schermopname van de Oproepstructuurweergave.

Schermopname van de weergave OproepStructuur.

De volgende informatie wordt weergegeven in de weergave Oproepstructuur:

  • De kolom functienaam toont het proces of de naam van de functie met objecten die geheugen toewijzen. De weergave is gebaseerd op het niveau van het knooppunt dat u inspecteert.
  • De kolommen Totaal (toewijzingen) en Totale grootte (bytes) geven het aantal toegewezen objecten en de hoeveelheid geheugen weer die wordt gebruikt door een functie en alle andere functies die worden aangeroepen. De kolom Totale grootte (bytes) is standaard verborgen.
  • De kolommen zelf (toewijzingen) en Self-Size (bytes) geven het aantal toegewezen objecten en de hoeveelheid geheugen weer die wordt gebruikt door één geselecteerde functie of toewijzingstype.
  • In de kolom Gemiddelde grootte (bytes) worden dezelfde gegevens weergegeven als in de weergave Toewijzingen. Deze kolom is standaard verborgen.
  • In de kolom modulenaam wordt de module weergegeven die de functie of het aanroepende proces bevat.

Aanvullende opties die in de weergave Oproepstructuur verschijnen, zijn onder andere:

  • De knop Hot Path uitbreiden markeert een functie-uitvoeringspad met veel objecten die geheugen toekennen. Het algoritme begint bij een knooppunt dat u selecteert en markeert het pad met de meeste toewijzingen, om u te begeleiden in uw onderzoek.
  • De knop Hetere pad weergeven toont of verbergt de vlamsymbolen die aangeven welke knooppunten deel uitmaken van het hetere pad.

Schermopname van het kritieke pad uitgevouwen.

Schermopname van het kritieke pad uitgevouwen.

Functies

In de weergave Functions worden processen, modules en functies weergegeven die geheugen toewijzen.

Schermopname van de Functiesweergave.

Schermopname van de Functieweergave.

Informatie die wordt weergegeven in de weergave Functions bevat:

  • In de kolom Naam worden processen weergegeven als de knooppunten op het hoogste niveau. Onder processen bevinden zich modules en onder modules zijn functies.

  • In de volgende kolommen worden dezelfde gegevens weergegeven als in de Toewijzing en oproepstructuur weergaven.

    • totaal (toewijzingen)
    • zelf (toewijzingen)
    • totale grootte (bytes)
    • Eigen grootte (Bytes)
    • gemiddelde grootte (bytes)

Collectie

In de weergave Verzameling ziet u hoeveel objecten zijn verzameld of bewaard tijdens de garbagecollection.

Schermafbeelding van de verzamelingsweergave.

Schermafbeelding van de verzamelingsweergave.

De volgende informatie wordt weergegeven in de weergave Verzameling.

  • De kolom GC toont de id van deze garbagecollection in de levenscyclus van het uitvoerbare bestand.
  • In de kolom Generation wordt de generatie van de garbage collection weergegeven.
  • In de kolom GC-type wordt het type garbage collection weergegeven.
  • In de kolom GC Reason ziet u de reden voor dit vuilophaaldienstevenement.
  • De kolom Pauzeduur toont de tijd dat de uitvoering werd geblokkeerd omdat de garbagecollector exclusief gebruik van de heap kan maken. Voor achtergrondgeheugenopruiming is deze waarde klein.
  • In de kolom LOH-grootte wordt de grootte van de Grote Object Heap weergegeven nadat de garbagecollector is uitgevoerd.
  • In de kolom POH-grootte wordt de grootte van de Pinned Object Heap weergegeven nadat de garbage collector is uitgevoerd.
  • De kolom Finalizable Surv (MB) toont het aantal MB van objecten met finalizers (destructors) die de garbage collection hebben overleefd.
  • In de kolom Vastgemaakte objecten wordt het aantal vastgemaakte objecten weergegeven dat door deze garbagecollection wordt gepromoveerd.
  • In de kolom Verzamelde wordt het aantal objecten weergegeven dat door de garbagecollector is verzameld.
  • In de kolom Survived ziet u het aantal objecten dat heeft overleefd nadat de garbagecollector is uitgevoerd.

Wanneer u een rij selecteert, worden in deze weergave ook cirkeldiagrammen weergegeven om verzamelde en overlevende objecten per type te visualiseren.

Screenshot van cirkeldiagrammen in de Collectieweergave.

Hulpprogramma's voor filteren

De weergaven Toewijzingen, Oproepstructuuren Functies bevatten allemaal de opties "Just My Code" weergeven en Systeemeigen code weergeven en een filtervak.

  • Just My Code weergeven systemen, frameworks en andere niet-gebruikerscode samenvouwen in [Externe code] frames, zodat u zich alleen kunt richten op uw code. Zie Foutopsporing van gebruikerscode met Just My Codevoor meer informatie.
  • Systeemeigen code weergeven systeemeigen code in het analysedoel weergeeft en niet-gebruikte code kan bevatten.
  • Met het filtervak kunt u de kolom Naam of functienaam filteren op basis van de waarde die u opgeeft. Voer een tekenreekswaarde in het vak in. In de tabel worden vervolgens alleen typen weergegeven die die tekenreeks bevatten.