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

Windows Discussion :

programme qui consomme beaucoup de memoire


Sujet :

Windows

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut programme qui consomme beaucoup de memoire
    Voila, j'ai fait un programme de dessin utilisant la gdi, j'ai un probleme avec, c'est qu'il consomme beaucoup de memoire, environ 50% de l'utilisation de l'UC des que je dessines, redimensionnes la fenetre, ou bien deplaces la fenetre, et je n'ai aucune idee d'ou ca peut venir.....

    merci d'avance pour vos reponses

  2. #2
    Membre habitué Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Points : 145
    Points
    145
    Par défaut Re: programme qui consomme beaucoup de memoire
    Citation Envoyé par gaut
    qu'il consomme beaucoup de memoire, environ 50% de l'utilisation de l'UC
    Y'a pas comme un bug ?

    Gèle l'affichage pendant le déplacement

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    ouais mais je peux pas me permettre de le geler pendant que je dessine ou que je redimensionne la fenetre, et je sais pas comment on fait pour geler l'affichage........

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Quels sont les éléments du GDI que tu utilises?

    Il faut savoir que lorsque tu utilises des éléments du GDI, il faut toujours penser à les libérer, sinon c'est la catastrophe.

    Montres-nous un peu de ton code, on pourra peut-être t'aider.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Ca consomme de la mémoire ou de l'UC ?
    Tu peux rechercher les fuites GDI avec cet outil:
    http://msdn.microsoft.com/msdnmag/issues/01/03/leaks/default.aspx
    http://msdn.microsoft.com/msdnmag/issues/03/01/GDILeaks/default.aspx

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    Quels sont les éléments du GDI que tu utilises?
    j'utilise la fonction GetDC( HDC ) comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StretchDIBits&#40; GetDC&#40;HwndC&#41;, &#40;BarInfoH.nPos + BarInfoH.nPage >= BarInfoH.nMax && BarInfoH.nPage < BarInfoH.nMax &#41;? -&#40;BarInfoH.nMax-BarInfoH.nPage&#41; &#58; -&#40;BarInfoH.nPos/Zoom&#41;*Zoom, &#40;BarInfoV.nPos + BarInfoV.nPage >= BarInfoV.nMax && BarInfoV.nPage < BarInfoV.nMax &#41;? -&#40;BarInfoV.nMax-BarInfoV.nPage&#41; &#58; -&#40;BarInfoV.nPos/Zoom&#41;*Zoom, Image&#91; 1 &#93;.Width*Zoom, Image&#91; 1 &#93;.Height*Zoom, 0, 0, Image&#91; 1 &#93;.Width, Image&#91; 1 &#93;.Height, Image&#91; 1 &#93;.DibBits, &Image&#91; 1 &#93;.BMI, DIB_RGB_COLORS, SRCCOPY&#41;;
    je pense que ca vient de l'utilisation de GetDC sans ReleaseDC, mais j'en suis pas du tout sur....

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StretchDIBits&#40; GetDC&#40;HwndC&#41;,
    Ah oui en effet tu crées une fuite là.

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    c'est vrai, ca venait donc de la?

    il faut donc que je fasses comme ca? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HDC MonNouveauHDC;
    MonNouveauHDC = GetDC&#40; HwndC &#41;;
    StretchDIBits&#40; MonNouveauHDC, .......
    ReleaseDC&#40; Hwnd, HwndC &#41;;

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    Je sais pas si ça vient que de là, mais ça doit y être pour quelque chose.
    HDC MonNouveauHDC;
    MonNouveauHDC = GetDC( HwndC );
    StretchDIBits( MonNouveauHDC, .......
    ReleaseDC( HwndC, MonNouveauHDC);

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2003
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 140
    Points : 76
    Points
    76
    Par défaut
    la fuite venait bien de la !

    le programme avec les fuites de GetDC sans ReleaseDC utilisait 60 % de l'UC, et une fois le programme rectifier, il utilise plus que 20% au maximum, et la fluidité de celui-ci est revenu, j'aurais jamais pensé que ca pouvait autant affecté la mémoire !

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 752
    Points : 10 682
    Points
    10 682
    Billets dans le blog
    3
    Par défaut
    A peu près tout ce temps devait etre perdu à allouer de nvx DC. Plus tu en alloue, et plus c'est long d'en allouer de nvx...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme qui consomme beaucoup de CPU
    Par houssine91 dans le forum Général Java
    Réponses: 4
    Dernier message: 16/03/2013, 15h18
  2. Réponses: 6
    Dernier message: 05/03/2013, 18h33
  3. Réponses: 9
    Dernier message: 05/03/2013, 12h07
  4. boucle qui consomme beacoup de memoire
    Par pedro0077 dans le forum Général Java
    Réponses: 1
    Dernier message: 03/08/2010, 13h35
  5. Wscript et Cscript qui consomme beaucoup de RAM
    Par Dgeo77 dans le forum VBScript
    Réponses: 9
    Dernier message: 05/11/2008, 17h42

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