Share via


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。 在產生的顯示中, 追蹤 表示程式已啟用標準頁面堆積驗證, 而完整追蹤 表示已針對程式啟用完整頁面堆積驗證。