GFlags und PageHeap

Diese Version von GFlags enthält die Funktionalität von PageHeap (pageheap.exe), einem Tool, das die Überwachung der Heapzuordnung in Windows ermöglicht. PageHeap ermöglicht Windows-Features, die Arbeitsspeicher an der Grenze jeder Zuordnung reservieren, um Versuche zu erkennen, auf Arbeitsspeicher zuzugreifen, die über die Zuordnung hinausgehen.

Mit den Seitenheapoptionen in GFlags können Sie die Standardmäßige Heapüberprüfung auswählen, die Füllmuster am Ende jeder Heapzuordnung schreibt und die Muster untersucht, wenn die Zuordnungen freigegeben werden, oder die vollständige Heapüberprüfung, die eine seite, auf die nicht zugegriffen werden kann, am Ende jeder Zuordnung platziert, sodass das Programm sofort beendet wird, wenn es über die Zuordnung hinaus auf Arbeitsspeicher zugreift. Da bei der vollständigen Heapüberprüfung für jede Zuordnung eine vollständige Seite Arbeitsspeicher verwendet wird, kann die weit verbreitete Verwendung zu Systemspeicherengpässen führen.

  • Um die Standardmäßige Seitenheapüberprüfung für alle Prozesse zu aktivieren, verwenden Sie gflags /r +hpa oder gflags /k +hpa.

  • Um die Standardmäßige Seitenheapüberprüfung für einen Prozess zu aktivieren, verwenden Sie gflags /p /enableImageFileName.

  • Um die vollständige Seitenheapüberprüfung für einen Prozess zu aktivieren, verwenden Sie gflags /iImageFileName+hpa oder gflags /p /enableImageFileName/full.

Alle Seitenheapeinstellungen mit Ausnahme von /k werden in der Registrierung gespeichert und bleiben gültig, bis Sie sie ändern.

Beachten Sie, dass die PageHeap-Funktionalität nur aktiv ist, wenn die PageHeap-Überprüfung vor dem Start des Images aktiviert wurde. Bei Prozessen mit langer Ausführungsdauer, z. B. W3WP für IIS in einer Produktionsumgebung, bedeutet dies, dass die Überprüfung erst beginnt, wenn der Prozess neu gestartet wurde. Wenn PageHeap deaktiviert ist, während der Prozess ausgeführt wird, wird die Überprüfung fortgesetzt, bis der Prozess neu gestartet wird. Das wiederholte Ausgeben desselben GFlags-Befehls, während der Prozess ausgeführt wird oder nicht, hat keine zusätzlichen Auswirkungen. Daher ist die Aktivierung von PageHeap mit dem GFlags-Befehl idempotent.

PageHeap-Konfigurationen sind auch über Beendigungen des Prozesses und Systemneustarts hinweg persistent. Systemneustarts können verwendet werden, um einen Prozess neu zu initialisieren, nachdem die gewünschten PageHeap-Einstellungen konfiguriert wurden, aber sie können nicht verwendet werden, um die Funktionalität nach der Aktivierung zu deaktivieren. Das Deaktivieren von PageHeap muss explizit erfolgen.

Achten Sie darauf, das Kontrollkästchen Seitenheap aktivieren für eine Bilddatei im Dialogfeld GFlags zu interpretieren. Es gibt an, dass die Seitenheapüberprüfung für eine Bilddatei aktiviert ist, aber sie gibt nicht an, ob es sich um eine vollständige oder standardmäßige Seitenheapüberprüfung handelt. Wenn die Überprüfung nach dem Aktivieren des Kontrollkästchens resultiert, ist die vollständige Heapüberprüfung für die Bilddatei aktiviert. Wenn sich die Überprüfung jedoch aus der Verwendung der Befehlszeilenschnittstelle ergibt, kann die Überprüfung die Aktivierung der vollständigen oder standardmäßigen Seitenheapüberprüfung für die Bilddatei darstellen.

Um zu bestimmen, ob die vollständige oder standardmäßige Seitenheapüberprüfung für ein Programm aktiviert ist, geben Sie in der Befehlszeile gflags /p ein. In der resultierenden Anzeige geben Ablaufverfolgungen an, dass die Standardmäßige Seitenheapüberprüfung für das Programm aktiviert ist, und vollständige Ablaufverfolgungen geben an, dass die vollständige Seitenheapüberprüfung für das Programm aktiviert ist.