Partager via


GFlags et PageHeap

Cette version de GFlags inclut les fonctionnalités de PageHeap (pageheap.exe), un outil qui permet la surveillance de l’allocation de tas dans Windows. PageHeap permet aux fonctionnalités Windows qui réservent de la mémoire à la limite de chaque allocation pour détecter les tentatives d’accès à la mémoire au-delà de l’allocation.

Les options de tas de pages dans GFlags vous permettent de sélectionner la vérification standard du tas, qui écrit des modèles de remplissage à la fin de chaque allocation de tas et examine les modèles lorsque les allocations sont libérées, ou la vérification de tas de pages complètes, qui place une page inaccessible à la fin de chaque allocation afin que le programme s’arrête immédiatement s’il accède à la mémoire au-delà de l’allocation. Étant donné que la vérification complète du tas utilise une page complète de mémoire pour chaque allocation, son utilisation généralisée peut entraîner des pénuries de mémoire système.

  • Pour activer la vérification standard du tas de pages pour tous les processus, utilisez gflags /r +hpa ou gflags /k +hpa.

  • Pour activer la vérification standard du tas de pages pour un processus, utilisez gflags /p /enable ImageFileName.

  • Pour activer la vérification complète du tas de pages pour un processus, utilisez gflags /i ImageFileName +hpa ou gflags /p /enable ImageFileName /full.

Tous les paramètres de tas de pages, à l’exception de /k, sont stockés dans le Registre et restent effectifs jusqu’à ce que vous les modifiez.

Notez que la fonctionnalité PageHeap est active uniquement si la vérification PageHeap a été activée avant le lancement de l’image. Pour les processus longs, tels que W3WP pour IIS dans un environnement de production, cela signifie que la vérification ne commencera pas tant que le processus n’a pas été redémarré. De même, si PageHeap est désactivé pendant l’exécution du processus, la vérification continue jusqu’à ce que le processus soit redémarré. L’émission de la même commande GFlags à plusieurs reprises, pendant que le processus est en cours d’exécution ou non, n’a aucun effet supplémentaire. En conséquence, l’activation de PageHeap à l’aide de la commande GFlags est idempotente.

Les configurations PageHeap sont également persistantes entre les arrêts du processus et les redémarrages du système. Les redémarrages système peuvent être utilisés pour réinitialiser un processus une fois que les paramètres PageHeap souhaités sont configurés, mais ne peuvent pas être utilisés pour désactiver la fonctionnalité une fois qu’elle est activée. La désactivation de PageHeap doit être effectuée explicitement.

Utilisez des précautions pour interpréter la case à cocher Activer le tas de pages pour un fichier image dans la boîte de dialogue GFlags. Il indique que la vérification du tas de pages est activée pour un fichier image, mais qu’elle n’indique pas s’il s’agit d’une vérification complète ou standard du tas de pages. Si les résultats de la vérification proviennent de la case à cocher, la vérification complète du tas de pages est activée pour le fichier image. Toutefois, si la vérification résulte de l’utilisation de l’interface de ligne de commande, la vérification peut représenter l’activation de la vérification complète ou standard du tas de pages pour le fichier image.

Pour déterminer si la vérification complète ou standard du tas de pages est activée pour un programme, à la ligne de commande, tapez gflags /p. Dans l’affichage obtenu, les traces indiquent que la vérification du tas de pages standard est activée pour le programme et que les traces complètes indiquent que la vérification complète du tas de pages est activée pour le programme.