11
votes

Surveillance de la mémoire de tas de bureau

Y a-t-il un moyen de déterminer quelle application utilise la mémoire de tas de bureau?

Pour une explication de "Heap de bureau" voir Ce blog MSDN .

Edit: Si vous ne savez pas ce que "Mémoire de tas de bureau", veuillez ne pas répondre.

Edit2: Si vous ne savez pas ce que "Mémoire de tas de bureau" ne votez pas pour fermer la question.


0 commentaires

3 Réponses :


0
votes

Si vous souhaitez le faire dans votre programme, C ++ peut utiliser WMI pour trouver le coupable.


2 commentaires

Pas mon programme. Il y a quelque chose sur le serveur fuite de la mémoire de tas de bureau et j'ai besoin de comprendre ce que c'est. WMI a-t-il spécifiquement un crochet pour le tas de bureau? LIEN s'il vous plaît?


... Mais vous ne pouvez pas simplement utiliser le gestionnaire de tâches comme des pantalons suggérés? Choisissez Affichage / Sélectionner des colonnes



4
votes

4 commentaires

Je pense que les objets utilisateur ne sont qu'un des moyens de fuir le tas de bureau. Il n'y a pas d'applications d'interface graphique en cours d'exécution ici, uniquement des applications de serveur, il est donc peu probable d'aider; J'espère une vision claire du type: App a utilise 10 kb de mémoire tas de bureau, application B ...


Même pour les processus de serveur sont créés Windows. Pensez à la fenêtre cachée utilisée pour sa pompe de message STA. Puisque Windows est tout à propos de COM, il y a plusieurs fenêtres autour, même dans les applications de serveur. Autant que je sache, il n'ya aucun moyen de répertorier l'utilisation du tas de bureau par processus. Étant donné que les objets sont des poignées, il n'ya aucun moyen de dire la quantité de mémoire de tas de bureau cette fenêtre ou cette fenêtre, l'icône utilise.


Je suis sûr qu'il y a un moyen, mais il faudrait avoir un pilote de noyau. L'outil de DEBUHEAP DIAG de MS est un pilote de noyau. Malheureusement, il ne montre que l'utilisation totale, mais pas qui l'utilise. Vous avez raison que les processus de serveur auront des objets d'interface graphique, mais je ne pense pas qu'ils sont susceptibles de fuir ... et il y a des objets liés à des non-intervenants qui utilisent dh. Vaut toujours la peine d'essayer, bien sûr.


Désolé que je ne puisse pas vous aider plus spécifiquement mais votre question est plutôt générique. Quel serveur a le nombre de processus qui y traitent? Pouvez-vous essayer de tuer certains et de vérifier quels processus sont les processus probables. Comme alternative, vous pouvez joindre WINDBG sur tous les processus et vider la pile pour tous les appels aux appels système répertoriés dans le blog Publier et triez-les par processus et frappez le compte. Cette approche fonctionne à coup sûr, mais c'est une entreprise complexe. Il devient plus facile si vous avez plus de notes ou de suspicion quel processus a le problème.



3
votes

Disclaimer: Je travaille pour Microsoft, et ce sont mes pensées personnelles et mes expériences qui peuvent ou non refléter des politiques / procédures Microsoft actuelles ou futures / etc.

Je sais que c'est vieux, mais depuis que je suis tombé à travers elle, je voulais fournir des commentaires / réponses.

Le moniteur de tas de bureau ne fonctionne pas sur Vista +. Dheapmon dépend de la capacité de corriger les binaires du noyau pour suivre le tas de bureau, ce comportement est bloqué, c'est pourquoi cela ne fonctionne pas.

Pour surveiller vous-même le tas de bureau vous-même, tout ce que vous pouvez faire est d'examiner les objets utilisateur (malheureusement).

Pour obtenir une réponse complète, vous pouvez ouvrir un ticket de support avec Microsoft et avec un noyau ou une décharge complète (pas un vidage de processus!) Et ils peuvent inspecter le tas et vous fournir des informations. Il est extrait du fichier de vidage via une extension de débogueur, que j'ai écrite.

LIMITATIONS:

  1. ne fonctionne que du mode de noyau. Même si un mappage de tas de bureau existe en mode utilisateur, l'extension ne le supporte pas. Même si j'ai ajouté une prise en charge du mode d'emploi du mode de bureau, il serait limité car certaines des données associées ne sont que dans le mode noyau. Les modifications des générations récentes de Windows 10 peuvent le limiter en outre, je n'ai donc pas investi de temps pour ajouter le support de mode utilisateur.

  2. Il ne peut pas mesurer ce qui n'est pas dans la décharge. En d'autres termes, si le tas de bureau est manquant des pages, il fera de son mieux, mais cela perdra évidemment une précision.

  3. ne prend pas en charge Windows 10 Build 1809 ou Server 2019, pourtant, en raison des modifications apportées au gestionnaire de tas.

    codage heureux!


1 commentaires

C'est assez incroyable qu'une métrique critique comme celle-ci ne puisse réellement être surveillée dans Windows. Merci pour la clarification cependant.