Sdílet prostřednictvím


Analýza problémů s pamětí rozhraní .NET Framework

Najít nevracením paměti a neefektivní paměti, použijte v rozhraní .NET Framework kódu pomocí sady Visual Studio spravované paměti analyzer.Minimální verze rozhraní .NET Framework kódu cíl je rozhraní .NET Framework 4.5.Možnost pouze bude k dispozici na stránce souhrnu výpisu v Ultimate verzi sady Visual Studio 2013.Pokud používáte Premium nebo Professional neuvidíte možnost.

Nástroje pro analýzu paměti analyzuje informace v Vypsat soubory s daty haldy který kopie objektů v paměti aplikaci.Souborů výpisu (dmp) můžete shromažďovat z integrovaného vývojového prostředí sady Visual Studio nebo pomocí jiných systémové nástroje.

  • Je možné analyzovat jednoho snímku pochopit relativní dopad typy objektů na využití paměti a vyhledávat kód ve vaší aplikaci, která neefektivnímu spotřebu paměti.

  • Můžete také porovnávat (diff) dva snímky aplikace k vyhledání oblasti ve vašem kódu způsobující využití paměti, aby se zvýšil v čase.

Návod analýza spravované paměti, naleznete v pomocí sady Visual Studio 2013 na diagnostikovat problémy paměti .NET v produkčním prostředí na správu životního cyklu aplikací Visual Studio + blogu Team Foundation Server.

Obsah

Využití paměti v aplikacích pro rozhraní .NET Framework

Identifikovat problém paměti v aplikaci

Shromažďovat snímky paměti

Analýza využití paměti

Využití paměti v aplikacích pro rozhraní .NET Framework

Rozhraní .NET Framework je modul runtime uvolňování paměti, takže většina aplikací, využití paměti není v problém.Ale v aplikacích dlouho běžící jako webové služby a aplikace a v zařízení, které mají omezené množství paměti, souběh objektů v paměti může ovlivnit výkon aplikace a zařízení, které běží na.Využití paměti nadměrné lze starve aplikace a počítač prostředků, pokud uvolňování běží příliš často, nebo pokud v operačním systému bude muset přesunout paměti mezi paměti RAM a disku.V případě nejhorší aplikace může dojít k selhání s výjimkou "nedostatek paměti".

Rozhraní .NET spravované haldy je oblast virtuální paměti, kde jsou uloženy referenční objekty vytvořené pomocí aplikace.Dobu trvání objektů jsou spravována prostřednictvím uvolňování (GC).Uvolňování používá ke sledování objektů, které zabírají bloky paměti odkazy.Když je vytvořen a přiřazený k proměnné objektu je vytvořen odkaz.Jeden objekt může mít více odkazů.Můžete například Další odkazy na objekt lze vytvořit přidáním objektu na třídu, kolekce nebo jiné datové struktury nebo přiřazením objektu druhý proměnné.Méně zřejmé způsob, jak vytvořit odkaz je jeden objekt přidávání obslužnou rutinu události jiný objekt.Druhý objekt v tomto případě obsahuje odkaz na první objekt, dokud obslužná rutina explicitně odebrán nebo zničení druhý objekt.

Pro každou aplikaci udržuje GC stromu odkazy, který sleduje objekty odkazují aplikaci.Referenční stromu obsahuje sadu kořenové adresáře, který zahrnuje globální a statické objekty, stejně jako zásobníky související vlákna a dynamicky vytvořena instance objektů.Objekt se zobrazuje, pokud objekt má alespoň jeden nadřazený objekt, který obsahuje odkaz na ni.GC mohl uvolnit paměť objektu pouze v případě, že žádná jiná objektu nebo proměnné v aplikaci nemá odkaz na ni.

Zpět na začátekObsah

Identifikovat problém paměti v aplikaci

Nejlépe viditelný příznaku problémů paměti je výkon aplikace, obzvláště pokud snižuje výkon v čase.Snížení výkonu dalších aplikací je spuštěna aplikace může také znamenat problém paměti.Pokud se domníváte paměti problém, použijte nástroj jako správce úloh nebo Sledování výkonu systému Windows má být prověřen dále.Můžete například hledejte nárůst celkovou velikost paměti, která nelze vysvětlují jako možný zdroj nevracením paměti:

Růst konzistentní paměti v programu Sledování prostředků

Můžete také zaznamenat špičky paměti, které jsou větší, než by navrhnout svých znalostí kódu, který může ukazovat na využití paměti neefektivní v postupu:

Paměť tretry v správce prostředků

Shromažďovat snímky paměti

Nástroje pro analýzu paměti analyzuje informace v Vypsat soubory obsahující informace o haldy.Můžete vytvořit souborů výpisu v sadě Visual Studio, nebo můžete použít nástroj jako ProcDump z Windows Sysinternals.Podívejte se na téma k čemu slouží výpisu a jak jeden vytvořit? na blogu týmu ladicí program sady Visual Studio.

[!POZNÁMKA]

Většina nástrojů může shromažďovat informace výpisu s nebo bez dokončení haldy dat paměti.Visual Studio analyzer paměť vyžaduje plnou haldy informace.

Chcete-li shromažďovat výpis ze sady Visual Studio

  1. Můžete vytvořit soubor s výpisem pro proces, který byl spuštěn z projektu sady Visual Studio, nebo můžete připojit ladicí program k spuštěných procesů.Podívejte se na téma Připojení ke spuštěným procesům pomocí ladicího programu sady Visual Studio.

  2. Pokud chcete zastavte skript.Pokud se rozhodnete, dojde k zastavení ladicí program rozdělit všechny na ladění nabídce, nebo na výjimku, nebo na zarážky

  3. Na ladění nabídce zvolte Uložit výpis jako.V Uložit výpis jako dialogové okno pole, zadejte umístění a ujistěte se, že Minidump s haldy (výchozí) je vybrána v Uložit jako typ seznamu.

Chcete-li porovnat dvě snímky paměti

Pro analýzu nárůst využití paměti pro aplikace, shromážděte dvou souborů výpisu z jedné instance aplikace.

Zpět na začátekObsah

Analýza využití paměti

Filtrovat seznam objektů | Analýza dat paměti v z jednoho snímku | Porovnání dvou snímky paměti

Chcete-li analyzovat soubor výpisu stavu paměti použijte problémy:

  1. V sadě Visual Studio, zvolte soubor, Open a zadejte soubor výpisu.

  2. Na Souhrn souborů Minidump stránky, zvolte ladění spravované paměti.

    Stránka Souhrn souborů výpisu

Paměť analyzer spustí relaci ladění analyzovat soubor a zobrazí výsledky na stránce zobrazit haldy:

Zpět na začátekObsah

Filtrovat seznam objektů

Ve výchozím nastavení paměti analyzer vyfiltruje seznam objektů v paměti snímku, chcete-li zobrazit pouze typy a instance, které jsou uživatelský kód a, aby obsahoval pouze typy, jejichž celková velikost včetně překročit prahovou hodnotu procentní podíl celkového haldy velikost.Tyto možnosti v můžete změnit Nastavení zobrazení seznam:

Povolit volbu Pouze vlastní kód

Pouze můj kód skryje nejběžnější systémové objekty, které budou zobrazeny pouze typy, které vytvoříte v seznamu.

Můžete také nastavit možnost pouze můj kód v sadě Visual Studio Možnosti dialogového okna.Na ladění nabídce zvolte Možnosti a nastavení.V ladění/Obecné kartu, zvolí nebo vymaže Pouze můj kód.

Sbalit malé objekty

Sbalit malých objektů skryje všechny typy, jejichž celková včetně velikost je menší než 0,5 % celkové haldy velikosti.

Můžete také filtrovat seznam typů zadáním řetězec v vyhledávání pole.V seznamu jsou uvedeny pouze typy, jejichž názvy obsahují řetězec.

Zpět na začátekObsah

Analýza dat paměti v z jednoho snímku

Visual Studio spustí novou relaci ladění analyzovat soubor a zobrazí data o paměti v okně haldy zobrazení.

Seznam typů objektu

Zpět na začátekObsah

Typ tabulce objektů.

Hlavní tabulka uvádí typy objektů, které jsou uloženy v paměti.

  • Počet ukazuje počet instancí typu ve snímku.

  • Velikost (bajty) je velikost všech instancí typu, s výjimkou velikost objektů, které obsahuje odkazy na.Rozhraní

  • Včetně velikost (bajty) zahrnuje velikostí odkazované objektů.

Můžete zvolit ikonu instancí (Instance ikonu ve sloupci typu objektu) v typu objektu sloupce, chcete-li zobrazit seznam instancí typu.

Instance tabulky

Instance tabulky

  • Instance je umístění v paměti objektu, který slouží jako identifikátor objektu objektu

  • Hodnotu zobrazuje skutečné hodnoty typy hodnot.Můžete ukazatel název typu referenční informace k zobrazení jeho datové hodnoty v popisu dat.

    Instance hodnoty v popisu dat.

  • Velikost (bajty) je velikost objektu, s výjimkou velikost objektů, které obsahuje odkazy na.Rozhraní

  • Včetně velikost (bajty) zahrnuje velikostí odkazované objektů.

Ve výchozím nastavení, typy a instance jsou řazeny podle včetně velikost (bajty).Zvolte záhlaví sloupce v seznamu, chcete-li změnit pořadí řazení.

Cesty ke kořenu

  • Pro typ vybírány ze typu objektu tabulky, cesty k hlavní tabulka ukazuje jedinečný typ hierarchie, které vedou k kořenový objekty pro všechny objekty typu, spolu s číslem odkazy na typ, který je nad ním v hierarchii.

  • Pro objekt vybraný z instance typu cesty k hlavní zobrazuje graf skutečných objektů, které obsahují odkaz na instanci.Můžete ukazatel název objektu k zobrazení jeho datové hodnoty v popisu dat.

Odkazuje typy / odkazoval na objekty

  • Pro typ vybírány ze typu objektu tabulky, odkazoval na typy karta zobrazuje velikost a počet typů odkazované držené všechny objekty daného typu.

  • Pro vybrané instance typu odkazoval na objekty jsou uvedeny objekty, které drží vybrané instanci.Můžete ukazatel názvu k zobrazení jeho datové hodnoty v popisu dat.

Cyklické odkazy

Druhý objekt, který přímo nebo nepřímo obsahuje odkaz na první objekt může odkazovat na objekt.Když analyzátor paměti narazí této situaci, dojde k zastavení rozbalování cestu odkazu a přidá [zjištěn cyklický odkaz] anotace na výpis první objekt a zastaví.

Kořenový typy

Paměť analyzer Přidá anotace na kořenové objekty, které popisují druh reference, která čeká:

Poznámka

Popis

Statická proměnnáVariableName

Statická proměnná.VariableName je název proměnné.

Popisovač dokončení

Odkaz z fronty finalizační metodě

Lokální proměnná

Místní proměnné.

Silné popisovač

Popisovač pro silné odkaz z tabulky popisovač objektu.

Asynchronní. Definovaného popisovač

Asynchronní definovaného objekt z objektu popisovač tabulky.

Závislé popisovač

Závislý objekt z tabulky popisovač objektu.

Definovaného popisovač

Definovaného silné odkaz z tabulky popisovač objektu.

Popisovač RefCount

Počítáno odkaz na objekt z tabulky popisovač objektu.

Popisovač SizedRef

Silné popisovač, která zachová přibližně kolektivní uzavření všechny objekty a kořenové objekt v době kolekce uvolňování paměti.

Definovaného místní proměnné

Definovaného místní proměnné.

Porovnání dvou snímky paměti

Můžete porovnat dvě souborů výpisu procesu k nalezení objektů, které by mohly být příčinou nevracením paměti.Interval mezi kolekce první (starší) a druhá (novější) soubor by měl být dostatečně velká, aby růstu počtu prozrazený objektů je snadno zřejmé.K porovnání dvou souborů:

  1. Otevřete druhý soubor výpisu a zvolte ladění spravované paměti na Souhrn souborů Minidump stránky.

  2. Na stránce sestava analýzy paměti, otevřete Select standardních hodnot seznamu a poté zvolte možnost Procházet k určení první soubor výpisu.

Průvodce analýzou přidá sloupce do horního podokna sestavy, která se zobrazí rozdíl mezi počet, velikost, a včetně velikost typů tyto hodnoty ve starších snímku.

Diff sloupce v seznamu Typ

Objekt počet odkazů Diff sloupec je také přidán do cesty k hlavní tabulky.

Zpět na začátekObsah

Viz také

Další zdroje

VS správy životního cyklu aplikací sady TFS blogu: Diagnostika problémů s .NET paměti v produkčním prostředí pomocí sady Visual Studio 2013

Channel 9 | TV sady Visual Studio | Spravované paměti Analysis

Channel 9 | Panel nástrojů sady Visual Studio | Při analýze paměti v sadě Visual Studio 2013 spravované