共用方式為


GFlags 和 PageHeap

此版本的 GFlags 包含 PageHeap (pageheap.exe) 的功能,此工具可在 Windows 中啟用堆積配置監視。 PageHeap 可讓 Windows 功能在每個配置界限保留記憶體,以偵測嘗試存取配置以外的記憶體。

GFlags 中的頁面堆積選項可讓您選取 標準堆積驗證,這會在每個堆積配置結束時寫入填滿模式,並在釋放配置時檢查模式,或 完整頁面堆積驗證,這會在每個配置結束時放置無法存取的頁面,讓程式在存取配置以外的記憶體時立即停止。 因為完整堆積驗證會針對每個配置使用完整分頁的記憶體,因此其廣泛使用可能會導致系統記憶體不足。

  • 若要啟用所有進程的標準頁面堆積驗證,請使用 gflags /r +hpagflags /k +hpa

  • 若要啟用一個進程的標準頁面堆積驗證,請使用 gflags /p /enable ImageFileName

  • 若要啟用一個進程的完整頁面堆積驗證,請使用 gflags /i ImageFileName +hpagflags /p /enable ImageFileName /full。

除了 /k 之外,所有頁面堆積設定都會儲存在登錄中,直到您變更這些設定為止,都保持有效。

請注意,只有在啟動映像之前已啟用 PageHeap 驗證時,PageHeap 功能才會作用中。 對於長時間執行的進程,例如生產環境中 IIS 的 W3WP,這表示在程式重新啟動之前,不會開始驗證。 同樣地,如果在進程執行時停用PageHeap,驗證將會繼續,直到進程重新啟動為止。 重複發出相同的 GFlags 命令,雖然進程正在執行或未執行,但沒有額外的效果。 因此,使用 GFlags 命令啟用 PageHeap 是等冪的。

PageHeap 組態也會持續於進程終止和系統重新啟動。 系統重新啟動可用來在設定所需的PageHeap設定之後重新初始化進程,但一旦啟用功能,就無法用來停用此功能。 必須明確停用PageHeap。

在解譯 GFlags 對話框中影像檔案的 [啟用頁面堆積 ] 複選框時,請使用小心。 它表示影像檔案已啟用頁面堆積驗證,但不會指出它是否為完整或標準頁面堆積驗證。 如果選取複選框的核取結果,則會為圖像檔啟用完整頁面堆積驗證。 不過,如果使用命令行介面的檢查結果,則檢查可以代表啟用圖像檔案的完整或標準頁面堆積驗證。

若要判斷程式是否已啟用完整或標準頁面堆積驗證,請在命令行輸入 gflags /p。 在產生的顯示中, 追蹤 表示已為程式啟用標準頁面堆積驗證,而 完整追蹤 表示已為程式啟用完整頁面堆積驗證。