2009-04-26 9 views
2

Je continue mon saga pour comprendre la consommation de mémoire par l'application VB6. L'option qui semble fonctionner le mieux jusqu'ici est de surveiller les différentes mesures de la mémoire à des moments clés de l'exécution et de comprendre où se trouvent les gros porcs mémoire. Le pilote de mesure pour étudier ceci, est de comprendre comment l'évolutivité d'application dans l'environnement multi-utilisateur dans Terminal Server (Citrix) est affectée en raison des changements de consommation de mémoire (en termes simples plus de mémoire, moins d'utilisateurs serveur).Comment les mesures de mémoire de Process Explorer sont-elles: WS privé, WS partageable, WS partagé colonnes calculées?

Je peux obtenir la plupart des métriques de mémoire pour le processus en utilisant GetProcessMemoryInfo. L'explorateur de processus rapporte des métriques supplémentaires WS privé, WS partageable, WS partagé - qui semblent très intéressants pour mon enquête.

Donc, la question est, est-il API standard/caché pour obtenir ces mesures pour un processus? Je voudrais interroger ces métriques par programme, afin que je puisse les capturer à des endroits clés pendant l'exécution de l'application et mieux comprendre l'utilisation de la mémoire.

Répondre

2

Voir l'API QueryWorkingSet. Cela semble plutôt désagréable à utiliser, car il retourne des informations sur une base par page et laisserait donc à vous de regrouper les totaux. S'il y a une meilleure méthode, s'il vous plaît laissez un commentaire et je vais supprimer cette réponse. En outre, si vous souhaitez surveiller les modifications de l'ensemble de travail dans des endroits spécifiques, vous pouvez consulter les API InitializeProcessForWsWatch et GetWsChanges, qui permettent de voir plus facilement le nombre de pages défaillantes. dans plutôt que d'avoir à marcher l'ensemble de la page avant et après.