GFlags 및 PageHeap

이 버전의 GFlags에는 Windows에서 힙 할당 모니터링을 사용하도록 설정하는 도구인 PageHeap(pageheap.exe)의 기능이 포함되어 있습니다. PageHeap을 사용하면 각 할당의 경계에서 메모리를 예약하는 Windows 기능을 사용하여 할당을 초과하여 메모리에 액세스하려는 시도를 감지할 수 있습니다.

GFlags의 페이지 힙 옵션을 사용하면 각 힙 할당의 끝에 채우기 패턴을 작성하고 할당이 해제된 경우 패턴을 검사하는 표준 힙 확인을 선택할 수 있습니다. 또는 할당을 초과하여 메모리에 액세스하는 경우 프로그램이 즉시 중지되도록 각 할당의 끝에 액세스할 수 없는 페이지를 배치하는 전체 페이지 힙 확인입니다. 전체 힙 확인은 각 할당에 대한 전체 메모리 페이지를 사용하므로 광범위한 사용으로 인해 시스템 메모리 부족이 발생할 수 있습니다.

  • 모든 프로세스에 대해 표준 페이지 힙 확인을 사용하도록 설정하려면 gflags /r +hpa 또는 gflags /k +hpa를 사용합니다.

  • 한 프로세스에 대해 표준 페이지 힙 확인을 사용하도록 설정하려면 gflags /p /enable ImageFileName을 사용합니다.

  • 한 프로세스에 대해 전체 페이지 힙 확인을 사용하도록 설정하려면 gflags /i ImageFileName +hpa 또는 gflags /p /enable ImageFileName /full을 사용합니다.

/k제외한 모든 페이지 힙 설정은 레지스트리에 저장되며 변경할 때까지 유효합니다.

PageHeap 기능은 이미지를 시작하기 전에 PageHeap 확인을 사용하도록 설정한 경우에만 활성화됩니다. 프로덕션 환경에서 IIS용 W3WP와 같은 장기 실행 프로세스의 경우 프로세스가 다시 시작될 때까지 확인이 시작되지 않습니다. 마찬가지로 프로세스가 실행되는 동안 PageHeap을 사용하지 않도록 설정하면 프로세스가 다시 시작될 때까지 확인이 계속됩니다. 프로세스가 실행 중이거나 실행되지 않는 동안 동일한 GFlags 명령을 반복적으로 실행해도 추가 효과가 없습니다. 이 경우 GFlags 명령을 사용하여 PageHeap을 사용하도록 설정하는 것은 idempotent입니다.

PageHeap 구성은 프로세스 종료 및 시스템 다시 시작에서 지속됩니다. 시스템 다시 시작은 원하는 PageHeap 설정이 구성되면 프로세스를 다시 초기화하는 데 사용할 수 있지만, 사용하도록 설정한 후에는 기능을 사용하지 않도록 설정하는 데 사용할 수 없습니다. PageHeap을 사용하지 않도록 설정하려면 명시적으로 수행해야 합니다.

GFlags 대화 상자에서 이미지 파일에 대한 페이지 힙 사용 확인란을 해석할 때는 주의해야 합니다. 이미지 파일에 대해 페이지 힙 확인이 사용하도록 설정되어 있음을 나타내지만 전체 또는 표준 페이지 힙 확인인지는 나타내지 않습니다. 확인란을 선택하면 이미지 파일에 대해 전체 페이지 힙 확인이 활성화됩니다. 그러나 명령줄 인터페이스를 사용한 확인 결과인 경우 확인은 이미지 파일에 대한 전체 또는 표준 페이지 힙 확인의 사용 여부를 나타낼 수 있습니다.

프로그램에 대해 전체 또는 표준 페이지 힙 확인을 사용할 수 있는지 여부를 확인하려면 명령줄에서 gflags /p를 입력합니다. 결과 디스플레이 에서 추적은 표준 페이지 힙 확인이 프로그램에 대해 사용하도록 설정되어 있음을 나타내고 전체 추적 은 프로그램에 대해 전체 페이지 힙 확인이 사용하도록 설정되어 있음을 나타냅니다.