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

VB.NET Discussion :

Projet Windows Forms - Consommation Mémoire lors du Survol d'un bouton


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Projet Windows Forms - Consommation Mémoire lors du Survol d'un bouton
    Bonjour,

    voilà je suis débutant dans le langage VB.Net et j'étais en train de me concevoir une petite application personnelle (sous Visual Studio 2013). Tout fonctionne mais je me suis aperçu que lorsque j'ouvre mon gestionnaire des tâches, la taille occupée en mémoire par mon programme augmente, surtout quand je clique ou survole un bouton de mon application.

    Du coup, j'ai fait un test : Nouveau projet Windows Forms puis j'ai ajouté un bouton ... Et je me suis aperçu que le simple fait de survoler un bouton (à de nombreuses reprises pour que ce soit visible dans le gestionnaire des tâches), peu importe le code qui tourne derrière, faisait augmenter la consommation mémoire d'un programme ! Donc voilà : savez-vous d'où cette perte de mémoire pourrait provenir ? Et si oui, en quoi est-elle nécessaire ? (car j'imagine que les développeurs de VB.Net n'ont pas volontairement laissé une "fuite" de mémoire lorsqu'un événement survient^^)

    De plus, si vous connaissez des cas similaires de consommation mémoire étranges, je suis preneur ;)

    Merci à tous ceux qui prendront le temps de me répondre :)

  2. #2
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 12
    Points
    12
    Par défaut
    Je pense que c'est normal, une espèce d'historique des évènements je suppose.
    J'ai pu constater que sur mon PC qu'au bout d'un moment la mémoire consommée n'augmente plus
    je passe de 7400K à ~14000K et ça arrête d'augmenter ensuite.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci de m'avoir répondu ;)

    Oui j'ai aussi remarqué que la consommation arrête d'augmenter au bout d'un petit moment.
    Ah j'avais pas pensé à l'historique, ça y ressemble en effet :)

    Quelqu'un pourrait nous confirmer ça ? Voire même approfondir pour avoir un petit aperçu du fonctionnement :)

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pas d'historique des events non ^^

    lors d'un survol de bouton, le bouton se redessine, pour ca il instancie divers objets graphiques qui prennent de la mémoire

    après c'est juste le fonctionnement de la mémoire en .net qui est optimisée de la sorte
    les objets qui ne sont plus utilisés ne sont pas libérés de suite (à part les objets non managés quand c'est bien codé) c'est un processus en arrière plan qui s'appelle Garbage Collector qui va faire le tour des références (~variables) pour chercher ceux qui ne sont plus utiles, et libérer la mémoire associée
    ce processus étant couteux en processeur, il n'est déclenché que de temps en temps, surtout quand windows dit à ton programme qu'il a besoin de ram

    globalement le fonctionnement de la mémoire on ne s'en soucie que peu en .net, à part quand on a un problème (comme une fuite) où là on recherche la cause et donc à comprendre le fonctionnement

    de nos jours il y a beaucoup de ram sur un pc, donc il n'est pas rare de voir un programme .net prendre quelques dizaines/centaines de Mo de ram avant de baisser d'un coup (passage du GC)

    dans le même genre, certains pourraient s'indigner de voir que windows prend 3 ou 4 de ram au démarrage, mais en fait il charge plein de choses qu'il risque d'avoir besoin pour améliorer le temps de réponse si on en a besoin
    et c'est plus logique de faire ca que de laisser nos pc avec 8Go de ram n'en utiliser qu'un, sinon ca devient moins utile d'en mettre 8 ^^
    sql server a ce genre de chose aussi, tout données lue reste en ram ; quand l'OS lui demande un peu de place il retire de la mémoire les données les moins utilisées ; avec une base de données de 4Go, sql server risque donc d'utiliser au moins 3Go de ram


    pour résumer, une application .net qui ne fait rien, on ne s'inquiète de la ram utilisé qu'une fois les 100Mo dépassé je pense
    (par rien j'entends moins de 30 000 lignes de code)
    et si tu veux te renseigner sur le fonctionnement de la mémoire, les bonnes pratiques et les fuites mémoires, tu peux te documenter la mémoire managée/non managée, la méthode Dispose, et les Using/End Using (et éventuellement sur le GC mais c'est moins utile que ce que j'ai cité précédemment)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 5
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup pour cette explication !
    Du coup, ça me permet de mieux comprendre le fonctionnement moi aussi

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Ouah merci beaucoup pour cette réponse claire et détaillée Pol63 ! :)))))
    J'ai appris pas mal de choses dans ton message, merci d'avoir détaillé autant !
    Et merci pour les pistes que tu donnes à la fin, je vais aller faire des recherches de mon côté sur ça dès aujourd'hui :)
    Du coup Sujet Résolu ;)

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

Discussions similaires

  1. [Débutant] Importation de données Excel dans un projet Windows Form
    Par Zarico1993 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/04/2014, 16h37
  2. utiliser une dll system32 avec un projet Windows Form
    Par gabouche dans le forum C++/CLI
    Réponses: 3
    Dernier message: 08/06/2012, 16h03
  3. [Débutant] Intégrer un projet Windows Form dans un code HTML
    Par ghrob dans le forum C#
    Réponses: 6
    Dernier message: 13/04/2012, 12h01
  4. Problème de Projet windows forms après installation de SP1
    Par mehdi_862000 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 21/05/2008, 14h04
  5. Réponses: 5
    Dernier message: 05/09/2006, 20h45

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