IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Threads & Processus C++ Discussion :

Comment récupérer la consommation mémoire de mon programme


Sujet :

Threads & Processus C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Comment récupérer la consommation mémoire de mon programme
    Bonjour,

    Je souhaiterai récupérer la consommation mémoire de mon processus sous windows xp. Plus précisément je chercherai à récupérer la consommation maximale (le pic de consommation) de tout son run.



    J'ai entendu parler de GetProcessMemoryInfo mais je n'ai pas trouver de tutoriel sur son utilisation, et je ne sais pas si c'est exactement ca qu'il me faut.

    pouvez vous m'orienter vers un tutoriel ou autre ?

    Merci

  2. #2
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Salut,

    J'utilise ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        DWORD pid = GetCurrentProcessId();
        //size_type result;
        HANDLE hProcess;
        PROCESS_MEMORY_COUNTERS pmc;
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,false,pid);
        if (GetProcessMemoryInfo( hProcess, &pmc, sizeof(pmc)))
        {
    WorkingSetSize:
            result = pmc.WorkingSetSize; // memoire utilisé par le code
        }
        CloseHandle( hProcess );
    Je dois avoir l'équivalent sous linux et mac si ca t'intérrese.

  3. #3
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 578
    Points
    41 578
    Par défaut
    Pourquoi GetCurrentProcessId() + OpenProcess() au lieu de simplement GetCurrentProcess() ?
    La fonction GetProcessMemoryInfo() serait-elle incompatible avec le pseudo-handle retourné par GetCurrentProcess() ?

  4. #4
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Probablement qu'il a plus simple, mais ca fonctionne.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour cette réponse. Mais ce code me donne la conso mémoire au temps t si j'ai bien compris ? Donc je dois le mettre dans un thread à part qui surveillera l'autre process ?

  6. #6
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    J'avais compris que tu voulais la conso de ton process en cours, pour surveiller un autre thred ou programme, il fut probablement l'adapter en s'en inspirant.
    Pour une utilisation en surveillance, il faut evidemment le mettre dans une boucle dans un thread paralléle.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    Citation Envoyé par uriotcea Voir le message
    Je dois avoir l'équivalent sous linux et mac si ca t'intérrese.
    Je veux bien l'équivalent sous Linux et Mac, s'il te plaît.

Discussions similaires

  1. Grosse consommation mémoire de mon application
    Par muad'dib dans le forum Langage
    Réponses: 14
    Dernier message: 18/10/2006, 16h20
  2. Réponses: 3
    Dernier message: 03/10/2006, 13h02
  3. Réponses: 3
    Dernier message: 31/08/2006, 16h11
  4. Comment récupérer les éléments d'un autre programme ?
    Par Henri_13 dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 29/11/2005, 00h16
  5. Comment récupérer l'ID d'une tâche programmée avec AT ?
    Par langela94 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo