Freigeben über


GFlags und PageHeap

Diese Version von GFlags enthält die Funktionalität von PageHeap (pageheap.exe), einem Tool, das die Heap-Zuordnungsüberwachung 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 Seiten heap-Optionen in GFlags können Sie die standardmäßige Heap-Überprüfung auswählen, die Füllmuster am Ende jeder Heap-Zuordnung schreibt und die Muster untersucht, wenn die Zuordnungen freigegeben werden, oder die Vollseiten-Heap-Überprüfung, die eine nicht zugängliche Seite am Ende jeder Zuordnung platziert, sodass das Programm sofort beendet wird, wenn es über die Zuordnung hinaus auf den Speicher zugreift. Da die vollständige Heap-Überprüfung für jede Zuordnung eine vollständige Seite des Arbeitsspeichers verwendet, kann die weit verbreitete Verwendung zu Systemspeicherengpässen führen.

  • Verwenden Sie gflags /r +hpa oder gflags /k +hpa, um die Standardseiten-Heap-Überprüfung für alle Prozesse zu aktivieren.

  • Verwenden Sie gflags /p /enable ImageFileName, um die Standardseiten-Heap-Überprüfung für einen Prozess zu aktivieren.

  • Verwenden Sie gflags /i ImageFileName +hpa oder gflags /p /enable ImageFileName /full, um die Vollseiten-Heap-Überprüfung für einen Prozess zu aktivieren.

Alle Seiten heap-Einstellungen mit Ausnahme von /k werden in der Registrierung gespeichert und bleiben wirksam, bis Sie sie ändern.

Beachten Sie, dass die PageHeap-Funktionalität nur aktiv ist, wenn die PageHeap-Überprüfung aktiviert wurde, bevor das Image gestartet wurde. Für lange ausgeführte Prozesse, 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ätzliche Auswirkung. Die Aktivierung von PageHeap mithilfe des GFlags-Befehls ist als Folge davon idempotent.

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

Verwenden Sie die Sorgfalt beim Interpretieren des Kontrollkästchens "Seite heap aktivieren" für eine Bilddatei im Dialogfeld "GFlags". Es weist darauf hin, dass die Überprüfung auf Seiten heap für eine Bilddatei aktiviert ist, aber es gibt nicht an, ob es sich um eine vollständige oder standardmäßige Seitenhapüberprüfung handelt. Wenn die Ergebnisse des Kontrollkästchens nicht aktiviert sind, ist die Überprüfung auf ganzer Seite für die Bilddatei aktiviert. Wenn jedoch die Ergebnisse der Überprüfung von der Befehlszeilenschnittstelle verwendet werden, kann die Überprüfung die Aktivierung der Vollständig- oder Standardseiten-Heapüberprüfung für die Bilddatei darstellen.

Um zu ermitteln, ob die Überprüfung auf einer vollständigen oder standardseitigen Seite für ein Programm aktiviert ist, geben Sie in der Befehlszeile gflags /p ein. In der resultierenden Anzeige gibt Ablaufverfolgungen an, dass die Standardmäßige Seiten heap-Überprüfung für das Programm aktiviert ist, und vollständige Ablaufverfolgungen deuten darauf hin, dass die Überprüfung der vollständigen Seite für das Programm aktiviert ist.