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.
Obsah
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:
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:
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
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.
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
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.
Obsah
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:
V sadě Visual Studio, zvolte soubor, Open a zadejte soubor výpisu.
Na Souhrn souborů Minidump stránky, zvolte ladění spravované paměti.
Paměť analyzer spustí relaci ladění analyzovat soubor a zobrazí výsledky na stránce zobrazit haldy:
Obsah
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.
Obsah
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í.
Obsah
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í () v typu objektu sloupce, chcete-li zobrazit seznam instancí typu.
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.
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ů:
Otevřete druhý soubor výpisu a zvolte ladění spravované paměti na Souhrn souborů Minidump stránky.
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.
Objekt počet odkazů Diff sloupec je také přidán do cesty k hlavní tabulky.
Obsah
Viz také
Další zdroje
Channel 9 | TV sady Visual Studio | Spravované paměti Analysis