Freigeben über


Analysieren der Speicherauslastung von Store-Apps (VB, C#, C++)

In Visual Studio 2013 Update 2 können Sie das Speicherauslastungstool im Leistungs- und Diagnosehub verwenden, um die Speicherauslastung von in C#, Visual Basic oder C++ und XAML geschriebenen Windows-Runtime-Apps zu analysieren. Insbesondere können Sie:

  • Die Speicherauslastung Ihrer App direkt in Visual Studio überwachen, während Sie ein Szenario entwickeln. Sie brauchen dazu keine System- oder Drittanbietertools zu verwenden.

  • Mit einem einzigen Klick detaillierte Momentaufnahmen des Zustands Ihres App-Speichers erstellen.

  • Momentaufnahmen vergleichen, um die Ursache subtiler oder komplexer Speicherprobleme zu finden.

Hinweis

In diesem Thema wird beschrieben, wie Sie das Speicherauslastungstool verwenden, um C#- und Visual Basic-Apps zu analysieren.

Der Leistungs- und Diagnosehub bietet Ihnen viele Optionen zum Ausführen und Verwalten von Diagnosesitzungen.Beispielsweise können Sie das CPU-Auslastungstool auf Windows Phone- oder Windows Store-Apps ausführen oder die Diagnosesitzung auf dem Visual Studio-Computer, einem Windows Phone, einem Windows Store-Gerät oder in einem der Visual Studio-Emulatoren oder -Simulatoren ausführen.Weitere Informationen finden Sie unter Ausführen von Analysetools über die Seite "Leistung und Diagnose".

Wie Sie die Speicherauslastung in Windows Store-Apps analysieren, die JavaScript und HTML verwenden, erfahren Sie unter Speicherauslastung analysieren (JavaScript).

Weitere Informationen über das Speicherauslastungstool, darunter über das Analysieren von C++- und C++/Cx-Apps, finden Sie unter Diagnose von Speicherproblemen mit dem neuen Speicherauslastungstool in Visual Studio im Microsoft Application Lifecycle Management Blog.

Starten einer Diagnosesitzung zur Speicherauslastung

  1. Öffnen Sie Ihr Projekt in Visual Studio.

  2. Wählen Sie im Menü Debuggen, Leistung und Diagnose aus.

  3. Wählen Sie auf der Seite des Leistungs- und Diagnosehub Speicherauslastung aus und danach die Schaltfläche Starten.

    Diagnosesitzung zur Speicherauslastung starten

Auswahl des Profilerstellungsmodus

Möglicherweise testen Sie eine systemeigene Komponente zusammen mit der verwalteten App, die Ihr Startprojekt ist. Oder die verwaltete App ist nur eine Testumgebung und Sie interessiert nur der systemeigene Speicher. Vielleicht möchten Sie auch erfahren, welche Beziehung zwischen Ihrer verwalteten App und Windows-Runtime besteht. Wählen Sie in solchen Situationen Einstellungen und dann die gewünschte Sprache oder die gewünschten Sprachen.

Programmiersprachen wählen

Speicherverwendung überwachen

Sie können das Speicherauslastungstool verwenden, um detaillierte Berichte zu erstellen, mit denen Sie Probleme finden und beheben, aber Sie können dieses Tool auch verwenden, um die Echtzeit-Speicherauswirkungen eines Szenarios zu untersuchen, das Sie gerade entwickeln.

Wenn Sie eine Diagnosesitzung starten, startet Ihre App und die Seite "Leistung und Diagnose" zeigt eine Zeitachse der Speicherverwendung Ihrer App an.

Speichernutzung überwachen

Während Ihre App ausgeführt wird, können Sie neue Funktionen ausprobieren oder Szenarios untersuchen, bei denen eventuell Probleme auftreten. Die Zeitachse der Speicherauslastung zeigt Schwankungen im Speicher Ihrer App an, während diese ausgeführt wird.

Spitzen in der Zeitachse weisen normalerweise darauf hin, dass eine Routine in der App Daten erfasst oder erstellt und diese dann verwirft, wenn die Verarbeitung abgeschlossen ist. Hohe Spitzen weisen auf Methoden hin, die Sie ggf. optimieren können. Problematischer ist ein Anstieg in der Auslastung von Speicher, der nicht zurückgegeben wird, denn dies kann auf ineffiziente Speicherverwendung oder sogar einen Speicherverlust hindeuten.

Schließen der Überwachungssitzung

Auflistung anhalten

Um eine Überwachungssitzung zu schließen, ohne einen Bericht zu erstellen, schließen Sie das Diagnosefenster einfach. Um einen Bericht zu generieren, wenn Sie Momentaufnahmen erstellt haben, wählen Sie Beenden.

Momentaufnahmen erstellen, um den Speicherzustand Ihrer App zu analysieren

Wenn Sie auf ein Speicherproblem stoßen und es untersuchen möchten, können Sie während der Diagnosesitzung Momentaufnahmen erstellen, um Speicherobjekte zu bestimmten Zeitpunkten zu erfassen. Da eine App eine Vielzahl verschiedener Arten von Objekten verwendet, sollten Sie Ihre Analyse auf ein Szenario ausrichten. Empfehlenswert ist es auch, vor dem Auftreten eines Speicherproblems eine Baselinemomentaufnahme der App zu erstellen, nach dem ersten Auftreten des Problems eine weitere Momentaufnahme zu erstellen und eine oder mehrere zusätzliche, wenn Sie das Szenario wiederholen.

Um Momentaufnahmen zu erstellen, starten Sie eine neue Diagnosesitzung. Wählen Sie Momentaufnahme erstellen, wenn Sie mit dem Erfassen der Speicherdaten beginnen möchten. Um einen Bericht zu erstellen, wählen Sie Beenden.

Übersichtsseite Speicherauslastung

Wenn Sie die Datenerfassung beenden, hält das Speicherauslastungstool die App an und zeigt die Übersicht an.

Übersichtsseite "Speicherauslastung"

Ansichten der Momentaufnahmen zur Speicherauslastung

Die Ansichten der Momentaufnahmen dienen dazu, detaillierte Berichte in neuen Visual Studio-Fenstern zu öffnen. Es gibt zwei zwei Arten von Ansichten:

Links Snapshot-Ansicht

Die nummerierten Objekte im Bild sind Links, die Momentaufnahmenberichte öffnen.

Schritt 1

Der Text des Links zeigt die Gesamtzahl der Bytes im Speicher zum Zeitpunkt der Momentaufnahme.

Wählen Sie diesen Link, um einen Bericht über Momentaufnahmendetails anzuzeigen, der nach der Gesamtgröße der Typinstanzen geordnet ist.

Schritt 2

Der Text des Links zeigt die Gesamtzahl der Objekte im Speicher zum Zeitpunkt der Momentaufnahme.

Wählen Sie diesen Link, um einen Bericht über Momentaufnahmendetails anzuzeigen, der nach der Anzahl der Typinstanzen geordnet ist.

Schritt 3

Der Text des Links zeigt den Unterschied zwischen der Gesamtgröße der Objekte im Speicher zum Zeitpunkt dieser Momentaufnahme und der Gesamtgröße der vorhergehenden Momentaufnahme.

Er zeigt eine positive Zahl, wenn die Speichergröße dieser Momentaufnahme größer ist als die der vorhergehenden, und eine negative Zahl, wenn die Speichergröße kleiner ist. Der Linktext Baseline weist darauf hin, dass diese Momentaufnahme die erste in dieser Diagnosesitzung ist, No Difference bedeutet, dass die Differenz null ist.

Wählen Sie diesen Link, um einen Bericht über Momentaufnahmenunterschiede anzuzeigen, der nach den Unterschieden in der Gesamtgröße der Typinstanzen geordnet ist.

Schritt 4

Der Text des Links zeigt den Unterschied zwischen der Gesamtzahl an Speicherobjekten in dieser Momentaufnahme und der Zahl der Objekte in der vorhergehenden Momentaufnahme.

Wählen Sie diesen Link, um einen Bericht über Momentaufnahmenunterschiede anzuzeigen, der nach den Unterschieden in der Gesamtzahl der Typinstanzen geordnet ist.

Momentaufnahmenberichte

Speicherauslastung Snapshot-Bericht

Strukturen der Momentaufnahmenberichte

Verwalteter Heap

Die Struktur des verwalteten Heaps Struktur des verwalteten Heaps (Momentaufnahmendetails) und die Struktur des verwalteten Heaps (Momentaufnahmenunterschiede) zeigen die Typen und Instanzen im Bericht. Wenn Sie einen Typ oder eine Instanz auswählen, werden die Pfade zum Stamm und die Strukturen der referenzierten Objekte für das gewählte Element angezeigt.

Pfade zum Stamm

Die Struktur der Pfade zum Stamm (Momentaufnahmendetails) und die Struktur der Pfade zum Stamm (Momentaufnahmenunterschiede) zeigen die Kette der Objekte, die den Typ oder die Instanz referenzieren. Der Garbage Collector von .NET Framework bereinigt den Speicher für ein Objekt nur dann, wenn alle Verweise darauf freigegeben wurden.

Referenzierte Objekte

Die Struktur der referenzierten Objekte (Momentaufnahmendetails) und die Struktur der referenzierten Objekte (Momentaufnahmenunterschiede) zeigen die Objekte, die der gewählte Typ oder die gewählte Instanz referenziert.

Objekttyp und Instanzenfelder

Wenn ein Objekttyp-Eintrag über untergeordnete Einträge verfügt, können Sie diese über das Pfeilsymbol anzeigen. Ist die Farbe des Objekttyp-Textes blau, können Sie es auswählen, um zu dem Objekt in dessen Quellcodedatei zu navigieren. Die Datei wird in einem separaten Fenster geöffnet.

Instanzennamen sind eindeutige IDs, die durch das Speicherauslastungstool generiert werden.

Tipp

Wenn Sie einen Typ bemerken, den Sie nicht einfach identifizieren können, oder wenn Sie nicht wissen, wie er mit Ihrem Code zusammenhängt, machen Sie sich darüber keine Gedanken.Wahrscheinlich handelt es sich um ein Objekt aus dem Framework, dem Betriebssystem oder dem Compiler, das das Speicherauslastungstool anzeigt, weil es mit den Besitzketten Ihrer Objekte zusammenhängt.

Berichtsstrukturenfilter

Die meisten Apps enthalten überraschend viele Typen, von denen die meisten für den App-Entwickler nicht von Interesse sind. Das Speicherauslastungstool definiert zwei Filter, mit denen Sie die meisten dieser Typen in den Strukturen des verwalteten Heaps und der Pfade zum Stamm verbergen können. Sie können eine Struktur auch nach dem Typennamen filtern.

Sortier- und Filteroptionen

Filter

Geben Sie in das Feld Filter eine Zeichenfolge ein, um die Strukturanzeigen auf Typen zu beschränken, die diese Zeichenfolge enthalten. Der Filter berücksichtigt die Groß-/Kleinschreibung nicht und erkennt die angegebene Zeichenfolge in jedem Teil des Typennamens.

Kleine Objekte reduzieren

Wird dieser Filter angewendet, dann werden Typen mit einer Größe (Bytes) von weniger als 0,5 Prozent der Gesamtgröße des Speichers bei Momentaufnahme in der Liste des verwalteten Heaps verborgen.

Nur mein Code

Der Filter Nur mein Code verbirgt die meisten Instanzen, die durch externen Code generiert werden. Externe Typen gehören zum Betriebssystem oder zu Framework-Komponenten oder werden durch den Compiler generiert.

Berichte über Momentaufnahmendetails

Berichte über Momentaufnahmendetails werden verwendet, um sich auf eine Momentaufnahme aus einer Diagnosesitzung zu konzentrieren. Um einen Detailbericht zu öffnen, wählen Sie einen der Links aus der Ansicht der Momentaufnahme, wie im Bild unten gezeigt. Beide Links öffnen denselben Bericht; der Unterschied besteht lediglich in der Sortierreihenfolge der Struktur des Managed Heap. In beiden Fällen können Sie die Sortierreihenfolge ändern, nachdem der Bericht geöffnet wurde.

Links zum Snapshot-Bericht in einer Snapshot-Ansicht

  • Der Link MB ordnet den Bericht nach der Spalte Inklusive Größe (Bytes).

  • Der Link Objekte ordnet den Bericht nach der Spalte Anzahl.

Struktur des verwalteten Heaps (Momentaufnahmendetails)

Die Struktur des verwalteten Heaps führt die Objekttypen auf, die im Speicher gehalten werden. Sie können den Typennamen erweitern, um die zehn größten Instanzen des Typs nach Größe geordnet anzuzeigen. Wenn Sie einen Typ oder eine Instanz auswählen, werden die Pfade zum Stamm und die Strukturen der referenzierten Objekte für das gewählte Element angezeigt.

Verwalteter Heap-Baum

Objekttyp

Der Name des Typs oder der Objektinstanz.

Anzahl

Die Anzahl der Objektinstanzen des Typs. Für eine Instanz ist die Anzahl stets 1.

Größe (Bytes)

Für Typen: Die Größe aller Instanzen des Typs in der Momentaufnahme des Speichers, ohne die Größe der in den Instanzen enthaltenen Objekte.

Für Instanzen: Die Größe des Objekts ohne die Größe der in den Instanzen enthaltenen Objekte.

Inklusive Größe (Bytes)

Die Größe der Instanzen des Typs oder einer einzelnen Instanz, einschließlich der Größe der enthaltenen Objekte.

Struktur der Pfade zum Stamm (Momentaufnahmendetails)

Die Struktur der Pfade zum Stamm zeigt die Kette der Objekte, die den Typ oder die Instanz referenzieren. Der Garbage Collector von .NET Framework bereinigt den Speicher für ein Objekt nur dann, wenn alle Verweise darauf freigegeben wurden.

Pfade zum Stammbaum für Typen

Wenn Sie einen Typ in der Struktur der Pfade zum Stamm anzeigen, wird die Zahl der Objekte der Typen mit Verweisen auf diesen Typ in der Spalte Verweiszähler angezeigt. Wenn Sie eine Instanz analysieren, wird die Spalte nicht angezeigt.

Struktur der referenzierten Objekte (Momentaufnahmendetails)

Die Struktur der referenzierten Objekte zeigt die Objekte, die der gewählte Typ oder die gewählte Instanz referenziert.

Referenzierter Objektbaum für Instanzen

Objekttyp / -instanz

Der Name des Typs oder der Objektinstanz.

Größe (Bytes)

Für Typen: Die Größe aller Instanzen des Typs ohne die Größe der in dem Typ enthaltenen Objekte.

Für Instanzen: Die Größe des Objekts ohne die Größe der in dem Objekt enthaltenen Objekte.

Inklusive Größe (Bytes)

Die Gesamtgröße der Instanzen des Typs oder die Größe der Instanz, einschließlich der Größe der enthaltenen Objekte.

Bericht über Momentaufnahmenunterschiede

Ein Bericht über Momentaufnahmenunterschiede zeigt die Unterschiede zwischen der primären Momentaufnahme und der direkt davor erstellten Momentaufnahme. Um einen solchen Bericht zu öffnen, wählen Sie einen der Links in der Momentaufnahmenansicht, wie im Bild unten gezeigt. Beide Links öffnen denselben Bericht; der Unterschied besteht lediglich in der Sortierreihenfolge der Struktur des Managed Heap. Sie können die Sortierreihenfolge ändern, nachdem der Bericht geöffnet wurde.

Links zum Unterschiedebericht in einer Snapshot-Ansicht

  • Der Link MB ordnet den Bericht nach der Spalte Inklusive Größe (Bytes).

  • Der Link Objekte ordnet den Bericht nach der Spalte Anzahl.

Struktur des verwalteten Heaps (Momentaufnahmenunterschiede)

Die Struktur des verwalteten Heaps führt die Objekttypen auf, die im Speicher gehalten werden. Sie können den Typennamen erweitern, um die zehn größten Instanzen des Typs nach Größe geordnet anzuzeigen. Wenn Sie einen Typ oder eine Instanz auswählen, werden die Pfade zum Stamm und die Strukturen der referenzierten Objekte für das gewählte Element angezeigt.

Verwalteter Heap-Baum für einen Typ im Unterschiedebericht

Im Bild sind die Spalten Anzahl, Größe (Bytes) und Inklusive Größe (Bytes) reduziert.

Objekttyp

Der Name des Typs oder der Objektinstanz.

Anzahl

Die Zahl der Instanzen eines Typs in der primären Momentaufnahme. Für eine Instanz ist die Anzahl stets 1.

Anzahlunterschied

Für Typen: Der Unterschied zwischen der Anzahl der Instanzen des Typs in der primären Momentaufnahme und der vorhergehenden Momentaufnahme. Für Instanzen ist das Feld leer.

Größe (Bytes)

Die Größe der Objekte in der primären Momentaufnahme ohne die Größe der in den Objekten enthaltenen Objekte. Für Typen sind Größe (Bytes) und Inklusive Größe (Bytes) die Gesamtgrößen der Typinstanzen.

Unterschied der Gesamtgrößen (Bytes)

Für Typen: Der Unterschied in der Gesamtgröße der Typinstanzen zwischen der primären Momentaufnahme und der vorhergehenden Momentaufnahme, ohne die Größe der in den Instanzen enthaltenen Objekte. Für Instanzen ist das Feld leer.

Inklusive Größe (Bytes)

Die Größe der Objekte in der primären Momentaufnahme einschließlich der Größe der in den Objekten enthaltenen Objekte.

Unterschied der inklusiven Größen (Bytes)

Für Typen: Der Unterschied in der Größe aller Typinstanzen zwischen der primären Momentaufnahme und der vorhergehenden Momentaufnahme, einschließlich der Größe der in den Objekten enthaltenen Objekte. Für Instanzen ist das Feld leer.

Struktur der Pfade zum Stamm (Momentaufnahmenunterschiede)

Die Struktur der Pfade zum Stamm zeigt die Kette der Objekte, die den Typ oder die Instanz referenzieren. Der Garbage Collector von .NET Framework bereinigt den Speicher für ein Objekt nur dann, wenn alle Verweise darauf freigegeben wurden.

Pfade zum Stammbaum für Instanzen in anderer Ansicht

Struktur der referenzierten Objekte (Momentaufnahmenunterschiede)

Die Struktur der referenzierten Objekte zeigt die Objekte, die der primäre Typ oder die Instanz referenziert.

Referenzierter Objektbaum für Instanzen

Objekttyp / -instanz

Der Name des Typs oder der Objektinstanz.

Größe (Bytes)

Für Instanzen: Die Größe des Objekts in der primären Momentaufnahme ohne die Größe der in der Instanz enthaltenen Objekte.

Für Typen: Die Gesamtgröße der Instanzen des Typs in der primären Momentaufnahme ohne die Größe der in der Instanz enthaltenen Objekte.

Inklusive Größe (Bytes)

Die Größe der Objekte in der primären Momentaufnahme einschließlich der Größe der in den Objekten enthaltenen Objekte.

Siehe auch

Konzepte

Analysieren der Speicherauslastung (JavaScript)

Analysieren der Leistung von Windows Store-Apps mit Visual Studio-Diagnosetools

Ausführen von Analysetools über die Seite "Leistung und Diagnose"

Weitere Ressourcen

Bewährte Vorgehensweisen für die Leistungsverbesserung in Windows Store-Apps mit C++, C# und Visual Basic