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 6 et antérieur Discussion :

[VB6] Outil pour surveiller la mémoire utilisée


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 125
    Points : 102
    Points
    102
    Par défaut [VB6] Outil pour surveiller la mémoire utilisée
    Bonjour,

    J'ai développé une application qui est exécutée en permanence sur un serveur.
    Lorsque que je démarre l'exécutable, il consomme 8Mo de RAM mais au bout de 24 H, l'utilisation de la mémoire monte à 250Mo!
    Je n'ai pas trouvé où est la faille de mon programme et je voulais savoir s'il existe un outil pour surveiller la mémoire utilisée par mon programme.

    Merci.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    tu cherches peut-être à faire ceci ,

    avec un timer Timer1, un label label1 et un label label2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Option Explicit
    Private Type MEMORYSTATUS
      dwlength As Long       '32
      dwmemoryload As Long   'pourcentage mémoire utilisée
      dwtotalphys As Long    '
      dwavailphys As Long    'mémoire physique disponible en octets
      dwavailpagefile As Long
      dwtotalvirtual As Long '
      dwavailvirtual As Long '
    End Type
     
    Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpmstmemstat As MEMORYSTATUS)
     
    Private Sub Form_Activate()
     timer1.Enabled = True
     timer1.Interval = 1
    End Sub
     
    Private Sub timer1_Timer()
        Dim memoire As MEMORYSTATUS, tata$, toto$
        memoire.dwlength = Len(memoire)
        GlobalMemoryStatus memoire
        With memoire
            tata$ = Str((.dwavailphys / 1024))
            toto$ = Str((.dwmemoryload))
            Label1.Caption = tata$
            Label2.Caption = toto$ & "%"
        End With
    End Sub

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    diagnostiquer une fuite mémoire est un des exercices qui me stimulent le plus :p

    1/ Est-ce que tu es sûr que c'est bien de la ram qu'il consomme ?
    2/ Quel OS ?
    3/ dans les grandes lignes, il fait quoi ton programme ?

    A+ !

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 125
    Points : 102
    Points
    102
    Par défaut
    Vld44> Le programme scrute à intervalle de temps régulier (Timer) un répertoire contenant des fichiers textes et en sortie, il écrit dans une base Oracle et crée des fichiers XML. Rien d'extraordinaire...
    La fuite de mémoire se produit sur un serveur windows 2000.
    Effectivement, je ne suis pas sûr que c'est de la RAM qu'il consomme, mais c'est de la mémoire en tout cas!

    ucfoutu> Merci pour le code. Mais ça ne donne que l'indication du pourcentage de mémoire utilisée. Est-ce que ça me permettra de trouver où est la fuite?

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par heffer69 Voir le message
    ucfoutu> Merci pour le code. Mais ça ne donne que l'indication du pourcentage de mémoire utilisée. Est-ce que ça me permettra de trouver où est la fuite?
    Là, c'est à toi de te montrer astucieux ...

    Tu peux par exemple te servir d'une variable globale toto, dont la valeur dépend d'un numéro, différent à chaque procédure.
    Dans l'évènement Timer de Timer1 : te servir d'une variable static (appoelons-la titi), mise à jour à la sortie de l'évènement et contenant le dernier pourcentage.
    Lorsque l'écart est grand entre le nouveau popurcentage et titi ===>> dénoncer le contenu de la variable toto (et tu connaitras ainsi le "numéro" de l'instruction "gourmande" ...
    Ce n'est qu'une idée et je compte sur toi pour te montrer malin....

    EDIT : on ignore le code que tu utilises ici et là ...!
    Mais (au hasard) si tu crées quelque chose, pense à détruire ce que tu crées, lorsque le résultat de ce que tu as créé est atteint.
    Une question : tu utilises FSO pour "scruter" tes répertoires ????

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Argentine

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    désactive les fonctions les plus profondes une par une et lance ton soft pour détecter de laquelle vient la fuite

    Ensuite une fois détectée, scrute bien la libération de mémoire, les pointeurs etc

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 125
    Points : 102
    Points
    102
    Par défaut
    Non je n'utilise pas FSO pour lire les répertoires mais ces fonctions là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
    Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
    Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
    Est-ce qu'il est préférable d'utiliser FSO?

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par heffer69 Voir le message
    Est-ce qu'il est préférable d'utiliser FSO?
    Non ! C'est bien ...

    Ceci étant dit, je viens (manuellement) de lancer 3 ou 4 recherches (simultanément) depuis l'explorateur et sur toutes mes partitions, tout en observant la "gourmandise" de la chose !
    C'est gourmand, oui !

    alors:

    Le programme scrute à intervalle de temps régulier (Timer) un répertoire contenant des fichiers textes et en sortie
    avec quels intervalles ?
    Il est clair que si l'intervalle est petit, tu risques fort de lancer plusieurs reecherches à la fois (l'une après l'autre, alors que les précédentes ne sont pas encore terminées...) et là, ma foi....

Discussions similaires

  1. Outils pour faire des statistiques, utilisation du trigramme
    Par Dammak A dans le forum Statistiques, Data Mining et Data Science
    Réponses: 0
    Dernier message: 22/03/2012, 11h30
  2. Partition full outil pour surveiller
    Par jfsenechal dans le forum Administration système
    Réponses: 4
    Dernier message: 28/01/2010, 09h18
  3. [Surveillance JBOSS4] Quels outils pour surveiller le serveur
    Par ericw78 dans le forum Wildfly/JBoss
    Réponses: 8
    Dernier message: 26/06/2008, 14h46
  4. [Info] Quels outils de develpt puis-je utiliser pour pocketpc
    Par chris69000 dans le forum Développement Mobile en Java
    Réponses: 2
    Dernier message: 22/06/2004, 10h25
  5. Outils linux pour surveiller les perf d'un serveur ?
    Par MASSAKA dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 22/10/2002, 10h40

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