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 :

[VB2008] pb fuite de mémoire


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut [VB2008] pb fuite de mémoire
    Bonjour,
    J'ai une question, j'ai un programme qui fonction avec plein de formulaire.
    Chaque formulaire fait un appel a SQL.
    Lorsque je regarde combien consomme mon programme dans le gestionnaire de tâches, je m'aperçois qu'il ne fait que grossir.
    Que se passe t'il ?

    Cordialement.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  2. #2
    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
    tout ce qui est disposable doit etre disposé (connections, bitmap, files, etc...) voir using/end using

    tout ce qui addhandlé doit etre removehandlé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    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 : 49
    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
    Bonjour.

    Un lien :

    http://www.microsoft.com/france/visi...a-ab4ec03f3a88

    C'est du C# mais cela s'applique à VB (c'est du .net).


    Durant cette session nous analyserons les causes de fuite les plus fréquentes et nous verrons en pratique comment les détecter. Nous montrerons au travers d'exemples concrets plusieurs outils qui peuvent vous aider à dépanner vos applications.Le but de cette session est de vous aider à résoudre et éviter les fuites dans vos applications .NET, qu'il s'agisse d'applications Windows Forms, WPF, Silverlight, ASP.NET, console, ou services Windows. Vous obtiendrez également des conseils pour améliorer vos applications de manière à ce qu'elles deviennent moins gourmandes en ressources.
    Malheureusement, dans le framework .net, tout n'est pas .net, notamment les objets GDI. Cela nécessite un Dispose sur ces objets, sous peine de fuite de mémoire. Il y a une ou deux autres raisons fréquentes, mais je vous laisse les découvrir dans la vidéo.

    Je pense que les objets GDI ne sont pas .net pour des problèmes de performance (ils utilisent la couche C/C++). Ou peut-être la flemme de les re-développer en .net...

    Bref le problème ensuite, c'est de détecter les fuites. Honnêtement, l'outil WinDedug proposé dans la vidéo ne m'a jamais aidé. Je pense qu'il me faudrait 6 mois pour maîtriser cet outil, afin qu'il puisse me permettre de détecter et de corriger les bugs.

    L'idée donc, pour ne pas être confronté à des problèmes de fuite de mémoire, c'est de connaître les principales causes, et de coder le mieux possible au départ.

    Etant plus développeur C++ natif que développeur .net, j'ai le réflexe de me dire : attention il faut que je pense à disposer/deleter cet objet. Je comprends qu'un développeur pure .net n'a pas ce réflexe (et s'expose donc plus à des fuites).

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    La meilleure façon de localiser les fuites, c'est d'utiliser un profileur. Perso j'aime bien ANTS Memory Profiler, vraiment très bien fichu. Il est payant mais il me semble qu'il y a une période d'évaluation gratuite.

  5. #5
    Membre régulier Avatar de libremax
    Profil pro
    Chargé de projets
    Inscrit en
    Mars 2007
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de projets

    Informations forums :
    Inscription : Mars 2007
    Messages : 168
    Points : 91
    Points
    91
    Par défaut re
    Bonjour a tous,

    Tout d'abord merci de vous intéresser a mon problème.
    Petit question, quand je met dans : me.dispose est ce que tout les éléments du formulaire (et lui aussi ) ne sont ils pas obligés d’être disposé?

    Je n'est pas eu le temps d'aller voir le lien microsoft mais je vais le faire.
    Je vais, aussi, récupéré la version trial de antz, pourriez-vous m'expliquer comment il fonctionne ?

    cdt.
    Débutant un jour, débutant toujours car chaques jours qui passent nous en apprend un peu plus.

  6. #6
    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
    quand on dispose un control (form hérite de control), il dispose tous ses enfants récursivement
    par contre si vous des controles dans des variables qui ne sont pas posés au moment de la fermeture, il faut les disposer vous même

    un profiler n'est pas forcément quelque chose de simple à utiliser, mais même sans être expert on arrive à en tirer des infos
    certains profilers permettent de faire des snapshots, une des méthodes c'est de faire un snapshot, d'ouvrir une fenêtre, de la refermer et de refaire un snapshot, ca vous dit tout ce qu'il reste entre les 2
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. fuite de mémoire ?
    Par salseropom dans le forum C
    Réponses: 2
    Dernier message: 12/01/2006, 16h19
  2. Réponses: 1
    Dernier message: 02/12/2005, 14h18
  3. fuite de mémoire
    Par mamag dans le forum MFC
    Réponses: 17
    Dernier message: 19/08/2005, 10h42
  4. Fuite de mémoire en utilisant le template list
    Par schtroumpf_farceur dans le forum Langage
    Réponses: 9
    Dernier message: 18/07/2005, 20h44
  5. Réponses: 8
    Dernier message: 17/10/2002, 12h52

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