Share 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 du 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 page dans GFlags vous permettent de sélectionner la vérification du tas standard, 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 du tas pleine page, 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 du tas de pages standard pour tous les processus, utilisez gflags /r +hpa ou gflags /k +hpa.

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

  • Pour activer la vérification du tas de page complète pour un processus, utilisez gflags /iImageFileName+hpa ou gflags /p /enableImageFileName/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 n’est active que si la vérification PageHeap a été activée avant le lancement de l’image. Pour les processus de longue durée, tels que W3WP pour IIS dans un environnement de production, cela signifie que la vérification ne commencera pas tant que le processus n’aura pas été redémarré. De même, si PageHeap est désactivé pendant l’exécution du processus, la vérification se poursuit jusqu’à ce que le processus soit redémarré. L’émission répétée de la même commande GFlags, 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.

Faites attention à l’interprétation de la zone Activer le tas de page case activée pour un fichier image dans la boîte de dialogue GFlags. Elle indique que la vérification du tas de pages est activée pour un fichier image, mais elle n’indique pas si elle est complète ou standard. Si le case activée résulte de la sélection de la zone case activée, la vérification du tas pleine page est activée pour le fichier image. Toutefois, si l’case activée résulte de l’utilisation de l’interface de ligne de commande, le case activée peut représenter l’activation de la vérification du tas de pages complète ou standard pour le fichier image.

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