共用方式為


GFlags 和 PageHeap

此版本的 GFlags 包含 PageHeap (pageheap.exe) 的功能,這是一個在 Windows 中啟用堆分配監控的工具。 PageHeap 可啟用 Windows 的功能,這些功能能在每個配置的邊界保留記憶體,以偵測對超出配置範圍的記憶體存取嘗試。

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

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

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

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

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

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

PageHeap 配置也會在處理程序終止及系統重新啟動時持續存在。 一旦配置了所需的 PageHeap 設置,系統重新啟動可用於重新初始化進程,但一旦啟用,就不能用於禁用該功能。 必須明確停用 PageHeap。

請小心理解 GFlags 對話方塊中影像檔案的 啟用頁面堆積 核取方塊。 它表示已針對映像檔啟用頁面堆驗證,但並未指出它是完整或標準頁面堆驗證。 如果檢查是透過選取核取方塊而產生的,則會針對映像檔啟用整頁資料堆驗證。 不過,如果檢查是使用命令列介面的結果,則檢查可以代表啟用映像檔的完整或標準頁面堆積驗證。

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