Megosztás a következőn keresztül:


Memóriahasználat elemzése a .NET-objektumfoglalási eszközzel

A .NET Object Allocation eszközzel láthatja, hogy az alkalmazás mennyi memóriát használ, és milyen kódútvonalak foglalják le a legtöbb memóriát.

Az eszköz futtatása után láthatja a függvény végrehajtási útvonalait, ahol az objektumok lefoglalása folyamatban van. Ezután visszakövetheti a legtöbb memóriát elfoglaló hívásfa gyökerét.

A .NET-objektumfoglalási eszköz használatával a teljesítmény javítását bemutató oktatóanyagért tekintse meg Esettanulmány: Kezdő útmutató a kódoptimalizálásához.

Beállítás

  1. A Visual Studio projektben állítsa a megoldás konfigurációját Kiadás értékre , és válassza ki az üzembe helyezési célt.

    Az üzembe helyezési cél általában megegyezik a projekt nevével, ami helyi üzembe helyezést jelez.

    Az üzembe helyezési cél általában a helyi Windows hibakereső (vagy helyi gép).

  2. Válassza az Alt+F2 lehetőséget a Visual Studióban a Teljesítményprofilozó megnyitásához.

  3. Jelölje be a .NET-objektumfoglalás-követés jelölőnégyzetet.

    Kiválasztott Dotnet-objektumfoglalás-követő eszköz képernyőképe.

    Kiválasztott Dotnet-objektumfoglalás-követő eszköz képernyőképe.

  4. Az eszköz futtatásához válassza a Start gombot.

    Ha a profilkészítő indítása előtt engedélyezi az Indítás gyűjtés szüneteltetésével opciót, adatokat nem gyűjtünk, amíg a diagnosztikai környezet nézetben a Rekord gombot nem választja.

  5. Az eszköz futtatása után haladjon végig az alkalmazáson belül profilként használni kívánt forgatókönyvön. Ezután válassza Adatgyűjtés leállítása vagy zárja be az alkalmazást az adatai ellenőrzéséhez.

    Képernyőkép egy ablakról, amely a Gyűjtemény leállítása műveletet mutatja.

    Képernyőkép egy ablakról, amely a Gyűjtemény leállítása műveletet mutatja.

  6. Válassza az Allokáció lapot. Az alábbiakhoz hasonlító memóriaallokációs adatok jelennek meg.

    A Kiosztás lap képernyőképe.

    A Kiosztás lap képernyőképe.

Most már elemezheti az objektumok memóriafoglalását.

A gyűjtés során a nyomkövetési eszköz lelassíthatja a profilozott alkalmazást. Ha a nyomkövető eszköz vagy az alkalmazás teljesítménye lassú, és nem kell minden objektumot nyomon követnie, módosíthatja a mintavételezési sebességet. Ehhez válassza ki a fogaskerék szimbólumot a követési eszköz mellett a profilkészítő összefoglaló oldalán.

Képernyőkép a Dotnet Allocation eszköz beállításairól.

Képernyőkép a Dotnet Allocation eszköz beállításairól.

Állítsa a mintavételezési sebességet a kívánt sebességre. Ez a módosítás felgyorsítja az alkalmazás teljesítményét a gyűjtemény és az elemzés során.

Módosított mintavételi sebesség képernyőképe.

Módosított mintavételi sebesség képernyőképe.

Az eszköz hatékonyabbá tétele érdekében további információt Profiler beállításainak optimalizálásacímű témakörben talál.

Az adatok ismertetése

A következő grafikus nézetben a felső gráf az alkalmazásban lévő élő objektumok számát mutatja. Az alsó Object Delta grafikon az alkalmazásobjektumok százalékos változását mutatja. A piros sávok jelzik a szemétgyűjtést.

A Dotnet Allocation eszköz gráfjának képernyőképe.

A Dotnet Allocation eszköz gráfjának képernyőképe.

Az időtartomány kiválasztásával szűrheti a táblázatos adatokat, hogy csak egy adott időtartomány tevékenységeit jelenítse meg. Ha ezt teszi, a lapokban megjelenő információk hatóköre a szűrt időtartományra terjed ki.

A Dotnet-foglalási idő szűrt gráfjának képernyőképe.

A Dotnet-foglalási idő szűrt gráfjának képernyőképe.

A gráfot nagyíthatja vagy kicsinyítheti is.

Elemzések

Ha bármilyen elemzés megjelenik az Elemzések nézetben, a megadott hivatkozás segítségével további információkat kaphat az azonosított problémáról.

AI-segítség kérése

Ha rendelkezik a Copilot szolgáltatással, mialatt a legfontosabb megállapításokat tekinti meg, mi is kaphat AI-segítséget. A Copilot adott teljesítményelemzésekhez kapcsolódó információkat és elemzéseket biztosít. A Copilot segítségével kérdéseket tehet fel a legtöbb memóriát használó objektumokkal kapcsolatban, ami segíthet a hatékonyabb vagy költséghatékonyabb kód előállításában.

Az Ask Copilot gomb Képernyőkép a Copilot kérése gombról. akkor is megjelenik, ha nincsenek konkrét teljesítményelemzések. Válassza az Ask Copilot lehetőséget a Copilottól való tanuláshoz, és kezdjen el kérdéseket feltenni.

Kiosztás

A Foglalási nézet megjeleníti a memóriát kiosztó objektumok helyét, valamint azt, hogy ezek az objektumok mennyi memóriát osztanak ki.

Kibontott Allokációs nézet képernyőképe.

Kibontott Allokációs nézet képernyőképe.

A kiosztási nézetben a következő információk láthatók:

  • A Type oszlop azon osztályok és struktúrák listája, amelyek memóriát vesznek fel. Egy típusra duplán kattintva fordított hívásfaként tekintheti meg a visszakövetést. A foglalási nézetben csak azok az elemek jelennek meg, amelyek a kijelölt kategóriában memóriát használnak.

  • A Foglalások oszlop azon objektumok számát jeleníti meg, amelyek egy adott foglalási típuson vagy függvényen belül memóriát vesznek fel. Ez az oszlop csak a Foglalási, a Hívásfaés a Funkciók nézetekben jelenik meg.

  • A bájtok és Átlagos méret (Bájt) oszlopok alapértelmezés szerint nem jelennek meg. Ha meg szeretné jeleníteni őket, kattintson a jobb gombbal a Típus vagy Foglalások oszlopra, majd válassza ki a bájtok és Átlagos méret (Bytes) beállításokat a diagramhoz való hozzáadásához.

    A két oszlop hasonló a Összesítés (Foglalások) és a Saját (Foglalások)oszlophoz, kivéve, hogy a memóriát elfoglaló objektumok száma helyett a felhasznált memória mennyiségét jelenítik meg. Ezek az oszlopok csak a Foglalás nézetben jelennek meg.

  • A modul neve oszlop a meghívni kívánt függvényt vagy folyamatot tartalmazó modult jeleníti meg.

Ezek az oszlopok rendezhetők. A Típus és modulnév oszlopainál növekvő vagy csökkenő sorrendben rendezheti az elemeket. A foglalások, bájtok és Átlagos méret (bájt)esetén a számérték növelésével vagy csökkentésével rendezheti az elemeket.

Szimbólumok

A következő szimbólumok jelennek meg a Foglalási, Hívásfaés Függvények lapon:

  • Az értéktípus szimbóluma – Értéktípus, például egész szám

  • Az érték típusú gyűjtemény szimbóluma – Érték típusú gyűjtemény, például egész számok tömbje

  • A hivatkozástípus szimbóluma – Hivatkozástípus, például karaktersor

  • A hivatkozás típusú gyűjtemény szimbóluma – Hivatkozás típusú gyűjtemény, például karakterlánc tömb.

Hívásfa

A Hívásfa nézet a sok memóriát lefoglaló objektumokat tartalmazó függvényvégrehajtási útvonalakat jeleníti meg.

Hívásfa nézet képernyőképe.

Hívásfa nézet képernyőképe.

A következő információk jelennek meg a Hívásfa nézetben:

  • A függvény neve oszlop a memóriát lefoglaló objektumokat tartalmazó függvény folyamatát vagy nevét jeleníti meg. A megjelenítés az éppen vizsgált csomópont szintjén alapul.
  • A Total (Allocations) és Total Size (Bytes) oszlopban a lefoglalt objektumok száma és a függvény által használt memória mennyisége és az általa hívott összes többi függvény látható. A Teljes méret (Bájt) oszlop alapértelmezés szerint rejtett.
  • A Önálló (Foglalások) és Self-Size (Bájt) oszlopok a lefoglalt objektumok számát és az egyetlen kiválasztott függvény vagy foglalási típus által használt memória mennyiségét jelenítik meg.
  • Az Átlagos méret (bájt) oszlop ugyanazokat az információkat jeleníti meg, mint a Foglalások nézetben. Ez az oszlop alapértelmezés szerint rejtett.
  • A modul neve oszlop a meghívni kívánt függvényt vagy folyamatot tartalmazó modult jeleníti meg.

A Hívásfa nézetben megjelenő további lehetőségek a következők:

  • A Gyorselérési út kibontása gomb egy olyan függvény-végrehajtási útvonalat emel ki, amely sok memóriát lefoglaló objektumot tartalmaz. Az algoritmus egy ön által kiválasztott csomóponton indul el, és kiemeli a legtöbb kiosztással járó útvonalat, segítve önt a vizsgálatban.
  • A Gyakori elérésű útvonal megjelenítése gomb megjeleníti vagy elrejti azokat a lángszimbólumokat, amelyek jelzik, hogy mely csomópontok tartoznak a gyakori elérésű útvonalhoz.

A gyakori elérésű útvonal kibontott képernyőképe.

A gyakori elérésű útvonal kibontott képernyőképe.

Functions

A Functions nézet a memóriát kiosztó folyamatokat, modulokat és függvényeket jeleníti meg.

A függvények nézet képernyőképe.

A függvények nézet képernyőképe.

A Functions nézetben megjelenő információk a következők:

  • A Név oszlop a legmagasabb szintű csomópontként jeleníti meg a folyamatokat. Az alatta lévő folyamatok modulok, alatta pedig függvények.

  • A következő oszlopok, amelyek ugyanazokat az információkat jelenítik meg, mint a Foglalási és Hívásfa nézetekben:

    • Összesen (Elosztások)
    • Saját (elosztások)
    • teljes méret (bájt)
    • saját méret (bájt)
    • Átlagos méret (bájt)

Gyűjtemény

A Gyűjtemény nézet azt mutatja, hogy hány objektumot gyűjtöttek össze vagy őriztek meg a szemétgyűjtés során.

Gyűjtemény nézet képernyőképe.

Gyűjtemény nézet képernyőképe.

A Gyűjtemény nézetben az alábbi információk jelennek meg.

  • A GC oszlop a végrehajtható életciklusban megjeleníti a szemétgyűjtés azonosítóját.
  • A Generációs oszlop a szemétgyűjtés generációját jeleníti meg.
  • A GC Type oszlop a szemétgyűjtés típusát mutatja.
  • A GC Ok oszlopban látható a szemétgyűjtési esemény oka.
  • A szüneteltetési időtartam oszlop azt az időt jeleníti meg, amikor a végrehajtás le lett tiltva, mert a szemétgyűjtőnek a halom kizárólagos használatára van szüksége. Háttérbeli szemétgyűjtés esetén ez az érték kicsi.
  • A LOH-méret oszlop a nagy objektum halom méretét jeleníti meg a szemétgyűjtő futtatása után.
  • A POH Size oszlop a rögzített objektumhalom méretét jeleníti meg a szemétgyűjtő lefutása után.
  • A Véglegesíthető Surv (MB) oszlop azoknak az objektumoknak a megabájtszámát mutatja, amelyek véglegesítőkkel (destruktorokkal) rendelkeznek, és túlélték a szemétgyűjtést.
  • A rögzített objektumok oszlopban látható a szemétgyűjtés során előléptetett rögzített objektumok száma.
  • A Összegyűjtött oszlop az összegyűjtött objektumok számát jeleníti meg.
  • A Túlélt oszlop a szemétgyűjtő futtatása után túlélt objektumok számát mutatja.

Amikor kiválaszt egy sort, ez a nézet kördiagramokat is megjelenít az összegyűjtött és túlélt objektumok típus szerint történő megjelenítéséhez.

Kördiagramok képernyőképe a Gyűjtemény nézetben.

Szűrőeszközök

A Foglalások, a Hívásfaés a Függvények nézet mind tartalmazza a Csak saját kód megjelenítése és a Natív kód megjelenítése opciókat, és egy szűrőmezőt.

  • Csak saját kód megjelenítése összecsukja a rendszereket, keretrendszereket és más nem használható kódot [Külső kód] keretekbe, hogy csak a kódra összpontosíthasson. További információ: Felhasználói kód hibakeresése a Just My Codehasználatával.
  • Natív kód megjelenítése natív kódot jelenít meg az elemzési célon belül, és tartalmazhat nemfelhasználó kódot.
  • A szűrőmezővel a megadott érték alapján szűrheti a Név vagy Függvénynév oszlopot. Írjon be egy sztringértéket a mezőbe. A táblázat ezután csak a sztringet tartalmazó típusokat jeleníti meg.