Condividi tramite


GFlags e PageHeap

Questa versione di GFlags include la funzionalità di PageHeap (pageheap.exe), uno strumento che consente il monitoraggio dell'allocazione dell'heap in Windows. PageHeap abilita le funzionalità di Windows che riservano memoria al limite di ogni allocazione per rilevare i tentativi di accesso alla memoria oltre l'allocazione.

Le opzioni dell'heap di pagina in GFlags consentono di selezionare la verifica dell'heap standard, che scrive i modelli di riempimento alla fine di ogni allocazione heap ed esamina i modelli quando le allocazioni vengono liberate o la verifica dell'heap a pagina intera, che inserisce una pagina inaccessibile alla fine di ogni allocazione in modo che il programma si arresti immediatamente se accede alla memoria oltre l'allocazione. Poiché la verifica dell'heap completa usa una pagina completa di memoria per ogni allocazione, l'uso diffuso può causare scarsità di memoria del sistema.

  • Per abilitare la verifica dell'heap di pagina standard per tutti i processi, usare gflags /r +hpa o gflags /k +hpa.

  • Per abilitare la verifica dell'heap di pagina standard per un processo, usare gflags /p /enable ImageFileName.

  • Per abilitare la verifica dell'heap a pagina completa per un processo, usare gflags /i ImageFileName +hpa o gflags /p /enable ImageFileName /full.

Tutte le impostazioni dell'heap di pagina, ad eccezione di /k, vengono archiviate nel Registro di sistema e rimangono valide fino a quando non vengono modificate.

Si noti che la funzionalità PageHeap è attiva solo se la verifica PageHeap è stata abilitata prima dell'avvio dell'immagine. Per i processi a esecuzione prolungata, ad esempio W3WP per IIS in un ambiente di produzione, significa che la verifica non inizierà fino al riavvio del processo. Analogamente, se PageHeap è disabilitato durante l'esecuzione del processo, la verifica continuerà fino al riavvio del processo. L'esecuzione ripetuta dello stesso comando GFlags, mentre il processo è in esecuzione o meno, non ha alcun effetto aggiuntivo. Come implicazione di questo, l'abilitazione di PageHeap usando il comando GFlags è idempotente.

Anche le configurazioni pageHeap sono persistenti tra le terminazioni del processo e i riavvii del sistema. I riavvii di sistema possono essere usati per inizializzare nuovamente un processo dopo la configurazione delle impostazioni PageHeap desiderate, ma non per disabilitare la funzionalità una volta abilitata. La disabilitazione di PageHeap deve essere eseguita in modo esplicito.

Prestare attenzione nell'interpretazione della casella di controllo Abilita heap pagina per un file di immagine nella finestra di dialogo GFlags. Indica che la verifica dell'heap di pagina è abilitata per un file di immagine, ma non indica se è la verifica dell'heap di pagina completa o standard. Se il controllo risulta dalla selezione della casella di controllo, la verifica dell'heap a pagina completa è abilitata per il file di immagine. Tuttavia, se il controllo risulta dall'uso dell'interfaccia della riga di comando, il controllo può rappresentare l'abilitazione della verifica dell'heap di pagina completa o standard per il file di immagine.

Per determinare se la verifica dell'heap di pagina completa o standard è abilitata per un programma, nella riga di comando digitare gflags /p. Nella visualizzazione risultante, le tracce indicano che la verifica dell'heap di pagina standard è abilitata per il programma e le tracce complete indicano che la verifica dell'heap di pagina completa è abilitata per il programma.