Freigeben über


Aktivieren der Erfassung von Heapdaten

Die Prozess-Heap-Analyse ist am effektivsten, wenn Stapel gesammelt werden, indem HeapAlloc- und HeapRealloc-Ereignisse erfasst werden. Um Stapel mit Symbolen zu entschlüsseln, müssen Sie die Symboldecodierung aktivieren. Sie können Heap-Daten entweder beim Start eines Prozesses oder bei einem bestehenden Prozess erfassen.

So aktivieren Sie die Datenerfassung beim Starten eines Prozesses

In diesem Beispiel wird der zu analysierende Prozess über die Befehlszeilensequenz gestartet, die die Datenerfassung beginnt. Durch die Aktivierung der Datenerfassung beim Starten eines Prozesses wird sichergestellt, dass keine Zuordnungsinformationen oder der Verlauf verloren gehen. Führen Sie die folgenden Schritte aus, um die Datenaufnahme beim Starten des Prozesses zu aktivieren:

  1. Geben Sie in einer erweiterten Eingabeaufforderung den folgenden Befehl ein: xperf -on Base -BufferSize 1024 -MinBuffers 10 -MaxBuffers 16

  2. Nachfolgend ein Beispielbefehl: xperf -start HeapSession -heap -PidNewProcess "C:\Program Files\Windows Sidebar\sidebar.exe" -BufferSize 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc

    Die Seitenleiste wird auf dem Desktop geöffnet.

    In der folgenden Tabelle werden diese Befehle beschrieben.

    Befehl Beschreibung

    -Start HeapSession

    Initialisiert eine Tracing- oder Logger-Sitzung. In diesem Fall heißt die Sitzung "HeapSession".

    -heap

    Identifiziert "HeapSession" als eine Heap-Trace.

    -PidNewProcess

    Initialisiert einen Prozess. In diesem Fall wird die Windows-Seitenleiste initialisiert.

    -BufferSize

    Legt die Puffergröße des Puffers fest, in dem die Ereignisdaten gespeichert werden. Eine optimale Größe für einen Puffer beträgt 1024 KB. Die Standardeinstellung ist 64 KB.

    -MinBuffers

    Legt die Mindestanzahl von Puffern für die Speicherung von Ereignisdaten fest. MinBuffers sollten MaxBuffers gleich sein, um die Konsistenz zwischen den Spuren zu gewährleisten.

    -MaxBuffers

    Weisen Sie MaxBuffers konservativ zu, da Puffer aus nicht ausgelagertem Speicher zugewiesen werden, der eine endliche Systemressource ist.

    -stackwalk

    Initialisiert die Stackwalk-Funktion, um Zuordnungs- und Deallocation-Informationen zu sammeln und diese Informationen mit bestimmten Threads zuzuordnen.

    HeapAlloc+HeapRealloc

    Identifiziert bestimmte Heap-Ereignisse, die von der Stackwalk-Funktion erfasst und dargestellt werden sollen.

  3. Geben Sie den folgenden Befehl ein: xperf -stop -stop HeapSession -d HeapTrace.etl

    Der -d HeapTrace.etl Befehl führt die in der Sitzung erzeugten Spuren in der Datei "HeapTrace.etl" zusammen.

So aktivieren Sie die Datenerfassung für einen bestehenden Prozess

Diese Option ermöglicht die Datenerfassung, ohne den Prozess zu beenden und neu zu starten. Dies kann von Vorteil sein, wenn das zu analysierende Szenario erst lange nach dem Start der Anwendung auftritt und eine anfängliche Heap-Zuweisung (die extrem große Trace-Dateien erzeugen kann) nicht erforderlich ist.

Führen Sie die folgenden Schritte aus:

  1. Starten Sie den NT Kernel Logger von einer erweiterten Eingabeaufforderung aus, und zwar mit dem Flag BASE wie folgt: xperf -on BASE

  2. Um das Heap-Tracing für einen bestehenden Prozess zu aktivieren, ersetzen Sie XXX durch die tatsächliche Prozess-ID in dem folgenden Befehl: xperf -start HeapSession -heap -Pid XXX -BufferSize 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalk HeapAlloc+HeapRealloc

  3. Bereiten Sie die Traces für die Analyse auf die gleiche Weise wie bei der Datenerfassung vor, wenn ein Prozess gestartet wird: xperf -stop -stop HeapSession -d heapTrace.etl

heap