Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Nástroj Využití paměti monitoruje využití paměti vaší aplikace. Nástroj můžete použít ke studiu efektů paměti v reálném čase scénářů, které aktivně vyvíjíte v Visual Studio. Můžete pořídit podrobné snímky stavů paměti aplikace a porovnat snímky a najít původní příčiny problémů s pamětí. Nástroj Využití paměti je podporován v aplikacích technologie .NET, ASP.NET, C++ nebo smíšeném režimu (technologie .NET a nativních).
Nástroj Využití paměti může spouštět při vydání nebo ladění sestavení. V tomto článku si ukážeme, jak používat nástroj Využití paměti v nástroji Visual Studio Performance Profiler, který se doporučuje pro sestavení vydaných verzí. Informace o výběru nejvhodnějšího nástroje pro analýzu paměti pro vaše potřeby naleznete v tématu Zvolit nástroj pro analýzu paměti.
Nejlepší zkušenosti s touto dokumentací získáte tak, že v seznamu v horní části článku vyberete upřednostňovaný vývojový jazyk nebo modul runtime.
Diagnostické relace využití paměti
Chcete-li spustit diagnostickou relaci využití paměti:
Otevřete projekt v Visual Studio.
Nástroj Využití paměti podporuje technologie .NET, ASP.NET, C++ nebo smíšené aplikace (technologie .NET a nativní).
V nabídce Ladění nastavte konfiguraci řešení na Release a vyberte cíl nasazení.
Cíl nasazení obvykle odpovídá názvu projektu, což označuje místní nasazení.
Na řádku nabídek vyberteLaděníprofileru výkonu .
Na kartě Flexibilní vyberte Využití paměti a pak vyberte Spustit.
Snímek obrazovky znázorňující možnost Využití paměti a tlačítko Start
- V části Dostupné nástroje, vyberte možnost Využití pamětia poté zvolte Start. Zahajte diagnostickou relaci využití paměti.
Poznámka
U některých typů project, například CMake, je nutné nastavit cíl spuštění na Executable. Další informace najdete v tématu Které nástroje jsou podporovány pro project?.
Monitorování využití paměti
Když spustíte diagnostickou relaci, spustí se vaše aplikace a v okně Diagnostické nástroje se zobrazí graf časové osy využití paměti vaší aplikace.
Graf časové osy zobrazuje kolísání paměti při spuštění aplikace. Špičky v grafu obvykle značí, že nějaký kód shromažďuje nebo vytváří data, a po dokončení zpracování je zahodí. Velké špičky označují oblasti, které můžete optimalizovat. Hlavním zájmem je nárůst spotřeby paměti, který se nevrátí. To může znamenat neefektivní využití paměti nebo dokonce únik paměti.
Pořízení snímků stavů paměti aplikace
Aplikace používá velký počet objektů a možná budete chtít soustředit analýzu na jeden scénář. Nebo můžete najít problémy s pamětí, které je potřeba prozkoumat. Během diagnostické relace můžete pořizovat snímky za účelem zachycení využití paměti v určitých okamžicích. Je dobré získat základní snímek aplikace, než se objeví potíže s pamětí. Po prvním výskytu problému můžete pořídit další snímek a další snímky, pokud můžete scénář zopakovat.
Pokud chcete shromažďovat snímky, vyberte Pořídit snímek, když chcete zachytit data paměti.
snímek obrazovky s pořízením snímku
Zavřít diagnostickou relaci
Chcete-li zastavit monitorovací relaci bez vytvoření sestavy, jednoduše zavřete okno diagnostiky. Pokud chcete vygenerovat zprávu po dokončení shromažďování dat nebo po pořízení snímků, vyberte Zastavit shromažďování.
snímek obrazovky zastavení sběru
snímek obrazovky zastavení sběru
Pokud máte potíže se shromažďováním nebo zobrazováním dat, přečtěte si téma Řešení chyb profilace a oprava problémů.
Zprávy o využití paměti
Po zastavení shromažďování dat nástroj Využití paměti aplikaci zastaví a zobrazí stránku s přehledem Využití paměti.
Snímky využití paměti
Čísla v podoknech Snímek zobrazují objekty a bajty v paměti při pořízení každého snímku a rozdíl mezi snímkem a předchozím snímkem.
Čísla jsou odkazy, které otevírají podrobná zobrazení sestavy Memory Usage v nových oknech Visual Studio. Sestava podrobných informací o snímku uvádí typy a instance v jednom snímku. Seznam rozdílu snímků porovnává typy a instance ve dvou snímcích.
Snímek obrazovky s odkazy zobrazení snímků
Ve C++ je sloupec Objects (Diff) pojmenován Allocations (Diff).
| Obrázek | Popis |
|---|---|
| krok 1průvodce procesem 1 | Celkový počet objektů v paměti při pořízení snímku. Výběrem tohoto odkazu zobrazíte sestavu podrobností snímku seřazenou podle počtu instancí typů. |
| krok 2průvodce procesem 2 | Rozdíl mezi celkovým počtem paměťových objektů v tomto snímku a předchozím snímkem. Výběrem tohoto odkazu zobrazíte diferenciální zprávu seřazenou podle rozdílu v celkovém počtu výskytů typů. |
| krok 3průvodce procesem 3 | Celkový počet bajtů v paměti při pořízení snímku. Výběrem tohoto odkazu zobrazíte sestavu podrobností snímku seřazenou podle celkové velikosti instancí typu. |
| krok 4 – průvodce procesem4 | Rozdíl mezi celkovou velikostí paměťových objektů v tomto snímku a předchozím snímkem. Kladné číslo znamená, že velikost paměti tohoto snímku je větší než předchozí a záporné číslo znamená, že velikost je menší. Základní čára označuje, že snímek je první v diagnostické relaci. žádný rozdíl znamená, že rozdíl je nula. Výběrem tohoto odkazu zobrazíte sestavu rozdílů snímků, seřazenou podle rozdílu v celkové velikosti instancí typů. |
Sestavy spravovaných typů
Zvolte aktuální propojení buňky Objekty (Diff) v souhrnné tabulce Využití paměti.
Snímek obrazovky sestavy spravovaného typu.Sestava spravovaného typu
Poznámka
Pro technologie .NET kód je ikona
Horní podokno zobrazuje počet a velikost typů snímku, včetně velikosti všech objektů, na které odkazuje typ (Inkluzivní velikost).
Strom Cesty ke kořeni v dolním podokně zobrazuje objekty, které odkazují na typ vybraný v horním podokně. technologie .NET garbage collector uvolňuje paměť objektu pouze tehdy, když byl uvolněn poslední typ, který na něj odkazuje. Další informace o použití stromu Cesty ke kořenům naleznete v tématu Analýza horké cesty ke kořenům.
Snímek obrazovky sestavy spravovaného typu.Sestava spravovaného typu
Poznámka
Kód technologie .NET: Ikona Zobrazit instance (
Ikona instance ve sloupci Typ objektu) je k dispozici pouze při použití nástroje debugger-integrated Memory Usage nebo při otevření snímku heap a zvolíte Ladit spravovanou paměť.
Horní podokno zobrazuje počet a velikost typů snímku, včetně velikosti všech objektů, na které odkazuje typ (Inkluzivní velikost).
Strom Cesty ke kořeni v dolním podokně zobrazuje objekty, které odkazují na typ vybraný v horním podokně. technologie .NET garbage collector uvolňuje paměť objektu pouze tehdy, když byl uvolněn poslední typ, který na něj odkazuje. Další informace o použití stromu Cesty ke kořenům naleznete v tématu Analýza horké cesty ke kořenům.
Strom zobrazení Referencované typy zobrazuje reference držené typem vybraným v horním podokně.
snímek obrazovky zprávy o odkazovaných objektech
Strom zobrazení Referencované typy zobrazuje reference držené typem vybraným v horním podokně.
snímek obrazovky zprávy o odkazovaných objektech
Filtry stromu sestav
Mnoho typů v aplikacích není nutné, aby vývojáři aplikací prozkoumali problémy s pamětí. Filtry sestav snímků můžou skrýt většinu těchto typů v spravované paměti a cesty ke kořenům.
Možnosti řazení a filtrovánívyužití paměti řazení a filtrování
Chcete-li filtrovat strom podle názvu typu, zadejte název do pole Filtr. Filtr nerozlišuje malá a velká písmena a rozpozná zadaný řetězec v libovolné části názvu typu.
Vyberte Pouze můj kód v rozbalovací nabídce Filtr, abyste skryli většinu instancí generovaných externím kódem. Externí typy patří do operačního systému nebo součástí architektury nebo jsou generovány kompilátorem.
Výběrem možnosti Sbalit malé objekty v rozevíracím seznamu Filtr skryjte typy, jejichž Velikost (Bajty) je menší než 0,5 procenta celkové paměti.
Sestavy nativních typů
V okně Diagnostické nástroje zvolte odkaz v aktuální buňce Přidělená paměť (Rozdíl) nebo Velikost haldy (Rozdíl) v tabulce Souhrn využití paměti.
snímek obrazovky nativního zobrazení typu
snímek obrazovky nativního zobrazení typu
Zobrazení Typy zobrazuje počet a velikost typů v snímku.
Výběrem ikony Zobrazit podrobnosti vedle vybraného typu zobrazíte informace o objektech vybraného typu ve snímku.
Výhled Instance zobrazuje každou instanci vybraného typu. Výběrem instance se zobrazí zásobník volání vedoucí k vytvoření instance v podokně Zásobník volání přidělení. (Tyto informace jsou dostupné pouze při ladění.)
Snímek obrazovky zobrazení instancí a přidělením zásobníku volání
Výběrem ikony Zobrazit instance vedle vybraného typu zobrazíte informace o objektech vybraného typu ve snímku.
Výhled Instance zobrazuje každou instanci vybraného typu. Výběrem instance se zobrazí zásobník volání vedoucí k vytvoření instance v podokně Zásobník volání přidělení. (Tyto informace jsou dostupné pouze při ladění.)
Snímek obrazovky zobrazení instancí a přidělením zásobníku volání
Zvolte Stacks a zobrazte zásobník přidělení pro vybraný typ.
snímek obrazovky zobrazení Zásobníků
Zvolte Stacks a zobrazte zásobník přidělení pro vybraný typ.
snímek obrazovky zobrazení Zásobníků
Přehledy využití paměti
Pro spravovanou paměť poskytuje nástroj Analýza paměti také několik výkonných integrovaných automatických přehledů. V sestavách spravovaných typů vyberte kartu Insights a zobrazí se příslušné automatické poznatky, jako jsou duplicitní řetězce, řídká polea úniky obslužných rutin události .
Snímek obrazovky nástroje Využití paměti se zobrazením přehledu.Přehled využití paměti
Snímek obrazovky nástroje Využití paměti se zobrazením přehledu.Přehled využití paměti
Oddíl Duplicitní řetězce ukazuje seznam řetězců, které jsou přidělovány několikrát na hromadě. Kromě toho tato část ukazuje celkovou ztrátu paměti, tj. (počet instancí – 1) krát velikost řetězce.
Oddíl řídká pole ukazuje pole, která jsou většinou naplněna nulovými prvky, což může být neefektivní, pokud jde o výkon a využití paměti. Nástroj pro analýzu paměti automaticky rozpozná tato pole a ukáže vám, kolik paměti je zbytečně využito kvůli těmto nulovým hodnotám.
Oddíl Úniky paměti z obslužných rutin, dostupný ve Visual Studio 2022 verze 17.9 Preview 1, ukazuje potenciální úniky paměti, které mohou nastat, když se jeden objekt připojí k události jiného objektu. Pokud vydavatel události přežije odběratele, zůstane odběratel naživu, i když na něj nejsou žádná další reference. To může vést k únikům paměti, kdy není správně uvolněna nevyužitá paměť, což způsobí, že aplikace bude postupem času využívat více paměti.
U některých typů je známo, že mají pole, která lze přečíst, aby určily velikost nativní paměti, kterou drží. Karta Insights zobrazuje falešné nativní paměťové uzly v grafu objektů, které jsou zachovány nadřazenými objekty tak, aby je uživatelské rozhraní rozpoznalo a zobrazilo jejich velikost a referenční graf.
snímek obrazovky s nativním zobrazením přehledu v nástroji Využití pamětizobrazení nativního přehledu v nástroji Využití paměti
Zprávy o změnách (rozdílech)
Na stránce Přehled využití paměti zvolte odkaz na změnu v buňce podokna Snímek.
Snímek obrazovky s odkazem pro výběr změny v buňce
Vyberte snímek ze seznamu Pro porovnání s spravovanou nebo nativní sestavou.
Snímek obrazovky seznamu Porovnat s
Snímek obrazovky s volbou snímku ze seznamu 'Porovnat s'.
Sestava změn přidá do základní sestavy sloupce (označené (Rozdíl)), které ukazují rozdíl mezi hodnotou základního snímku a srovnávacím snímkem. Takto může vypadat zpráva rozdílu zobrazení nativního typu:
snímek obrazovky se zobrazením rozdílu nativních typů.zobrazení rozdílu nativních typů
snímek obrazovky se zobrazením rozdílu nativních typů.zobrazení rozdílu nativních typů
Horní podokno zobrazuje počet a velikost typů snímku, včetně velikosti všech objektů, na které odkazuje typ (Inkluzivní velikost).
Související obsah
- Profilování ve Visual Studio
- První seznámení s nástroji pro profilaci
- Zprofilujte aplikaci pomocí agenta profileru GitHub Copilot
- Analýza kritické cesty ke kořeni
- Zvolit nástroj pro analýzu paměti
- nástroj pro přidělování objektů technologie .NET
- Řešení chyb profilace a řešení problémů
- Diagnostika problémů s pamětí pomocí nového nástroje Memory Usage ve Visual Studio