Comment récupérer La mémoire virtuelle occupée par un processus? [C++] - C++ - Programmation
Marsh Posté le 17-02-2011 à 19:22:08
Bonsoir,
C'est quoi pour toi la mémoire virtuelle occupée par un processus?
Marsh Posté le 18-02-2011 à 10:00:20
On va faire plus simple, je souhaite récupérer la quantité de mémoire virtuelle (indiquée par le gestionnaire des tâches) dans une appli C++, pour un processus données.
c'est ce que je souhaite récupérer .
Marsh Posté le 18-02-2011 à 10:06:07
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx => tu scrolles jusqu'a "Virtual Memory Functions".
Marsh Posté le 18-02-2011 à 10:32:57
ccp6128 a écrit : http://msdn.microsoft.com/en-us/li [...] 85%29.aspx => tu scrolles jusqu'a "Virtual Memory Functions". |
Merci mais je connaissais.
Ces méthodes donne le private byte et non la valeur en octet ou kilo etc ... de la mémoire virtuelle.
Ou je m'en sers mal.
Marsh Posté le 18-02-2011 à 10:46:32
Dans ce cas, tu devrais trouver des ressources plus détaillées la : http://www.hackchina.com/en/cont/140042
(le nom du site ne paie pas de mine, mais c'est l'équivalent d'un developpez.com en Chine). Y'a pas mal de sources en C++ liées à la gestion de la mémoire virtuelle).
Marsh Posté le 18-02-2011 à 12:51:53
Clarkent a écrit : On va faire plus simple, je souhaite récupérer la quantité de mémoire virtuelle (indiquée par le gestionnaire des tâches) dans une appli C++, pour un processus données. |
Tu ne dis toujours pas c'est quoi pour toi la mémoire virtuelle!
En théorie c'est la mémoire totale adressable par un processus, elle est la même pour tous les processus d'un système, du style ~3G pour un programme 32 bit sur un syteme 32bit
Sinon je crois pas que le gestionnaire de tache indique la mémoire virtuelle (ou alors elle se résume a total RAM physique+pagefile!), et encore moins pour un processus donnée...
Sinon la quantité totale de mémoire utilisée pour un processus, c'est peut etre PROCESS_MEMORY_COUNTERS_EX.WorkingSetSize + PROCESS_MEMORY_COUNTERS_EX.PagefileUsage ?
MEMORYSTATUSEX.ullTotalVirtual est décrit comme: "The size of the user-mode portion of the virtual address space of the calling process, in bytes. This value depends on the type of process, the type of processor, and the configuration of the operating system. For example, this value is approximately 2 GB for most 32-bit processes on an x86 processor and approximately 3 GB for 32-bit processes that are large address aware running on a system with 4-gigabyte tuning enabled."
Après c'est peut être une combinaison de ces informations la qu'il te faut?
Marsh Posté le 18-02-2011 à 13:11:52
ccp6128 a écrit : Dans ce cas, tu devrais trouver des ressources plus détaillées la : http://www.hackchina.com/en/cont/140042 |
Merci je vais étudier ces sources.
breizhbugs a écrit : |
Je cherche à connaitre la valeur qu'indique le gestionnaire de tâche dans la colonne "taille MV", mais oui il s'agit, il me semble, d'une combinaison de plusieurs éléments. Dont un est private byte, mais nous allons orienter ces recherches vers une autre valeur (après avoir étudier les sources proposés par CCP6128), car la valeur retourner par le gestionnaire des tâches ne seraient qu'une approximation voir une simulation pour le cas de la taille de la MV.
Marsh Posté le 18-02-2011 à 13:39:49
Clarkent a écrit : |
Mmmmh je n'ai pas cette colonne...
Marsh Posté le 18-02-2011 à 13:50:34
breizhbugs a écrit : |
Tu as un windows dans quelle langue ?
Marsh Posté le 18-02-2011 à 14:29:05
Bah français (w7 familial premium 64bits)
C'est dans quel onglet que tu as ça toi?
Marsh Posté le 18-02-2011 à 15:07:38
Je parlais de XP .
Je vois en effet que ça n'est pas présent sous 7.
Ce qui va peut être dans le sens que la taille MV indiquée sous XP ne correspondait pas à grand chose.
Et on se retrouvé avec la plage de travail ou jeu de travail privée.
Marsh Posté le 22-03-2011 à 10:06:39
Clarkent a écrit : Je parlais de XP . |
Bonjour,
J'ai exactement la même question, as tu pu trouver une solution finalement?!!
Marsh Posté le 02-04-2011 à 11:01:50
jul_rantan a écrit : |
Après quelques recherches, et surtout quelques observations entre le gestionnaire de tâche de windows et processXP, il semble que la valeur indiquée en tant que mémoire virtuelle dans le gestionnaire de tâche corresponde à "private byte" de processXP.
Et pour récupérer la valeur "private byte" tu as des structures disponibles en C++.
Tu devrais pouvoir trouver les méthodes sur le msdn ou via google , mais je n'ai pas l'info sur moi.
Marsh Posté le 17-02-2011 à 17:21:18
Hello,
Je travaille sur une application C++.
Celle-ci doit gérer sa mémoire virtuelle occupée (pour des raisons qui sont propres à l'application ).
Je n'ai trouvé aucun moyen d'interroger le système pour récupérer la quantité de mémoire virtuelle (et non la mémoire physique récupérable avec ::GetProcessMemoryInfo()) utilisée par un process donné (via le process id).
Les applications systinternals y arrivent, mais depuis que cela a été racheté par Microsoft, je n'ai pas trouvé les sources relatives à cette fonctionnalité.
Quelqu'un aurait il une piste ? Une solution ? Une commande dos ?
Je préfère éviter d'aller un exe externe pour avoir cette information.
Merci.
---------------
"PAR LE POUVOIR DU CRÂNE ANCESTRAL, JE DETIENS LA FORCE TOUTE PUISSANTE".