Augmentation memoire comment cerner le probleme?

cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016 - 26 févr. 2007 à 08:50
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016 - 26 févr. 2007 à 11:36
Bonjour,

j'ai une appli VB qui tourne en tant que serveur winsock sans interface graphique. Ce programme sert en fait de passerelle avec un automate pour une autre appli VB.
Mon probleme est que l'application voit son occupation mémoire grossir sans arret jusqu'a provoqué un manque de memoire de la part de windows. Ma question est, comment pouvoir isoler la variable, fonction ou dll qui utilise autant de memoire.

Merci

Got

10 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
26 févr. 2007 à 09:08
Salut,
Faudrait aussi que tu regardes, si dans ton appli tu déclares des objets avec l'instruction Set toto CreateObject...... et si tu les décharge de la mémoire aprés utilisation avec l'instruction Set toto Nothing...
Tu as peut-être une sorte de "boucle", qui "remplie" ta mémoire et à force mémoire pleine...
C'est qu'il faut chercher une peu partout dans ton apllication...

A+
Exploreur
0
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
26 févr. 2007 à 09:10
Merci pour le reponse. j'etait justement en train de chercher des appels comme ça suite au lecture sur le forum. Mais non y a rien de ce genre...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
26 févr. 2007 à 09:26
Salut,

Essaye alors si tu peux, de mettre certaines parties de ton apllication en remarques, pour voir quelles parties ou fonctions qui te "bouffe" toute la mémoire..
Ou de lancer ton application en mode : Pas à Pas et de voir qu'est-ce qui touren sans arrêt..

A+
Exploreur
0
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
26 févr. 2007 à 09:36
Dans ce cas de figure le pas à pas est difficile à mettre en oeuvre. L'idéale aurait été de pouvoir mettre des flag ou test visible en compilé...
Mais meme en pas à pas je ne verrai pas qu'elle variable utilise plus de memoire qu'une autre?! je connais les fonction appelé regulierement ça c'est pas un souci le souci c'est de savoir la dedans qui utilise la memoire...

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 févr. 2007 à 10:58
ton problème s'appelle une fuite mémoire. Il vient effectivement, généralement dans le cas ou un objet est créer mais n'est pas détruit après utilisation.

Puisque c'est un serveur Winsock, j'immagine que lors d'une demande de connection, tu n'tulise pas le controle winsock en ecoute pour répondre, mais tu en crée un second pour répondre à la connection. Est-ce que tu détruit bien ce second controle lorsque la connection est terminée.

Parce que justement ça ressemble à une demande périodique de connection. A chaque demande tu crée un nouveau controle winsock pour répondre, seulement les controles précédenment créés ne sont pas détruits et ils s'accumule en mémoire

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
26 févr. 2007 à 11:07
Effectivement ça pourait etre une piste ;-)

dans mon winsock_close je fait :

Private Sub Winsock1_Close(index As Integer)

    Unload Winsock1(index)    If Winsock1.Count 0 Then Index_Sock 0


End Sub

   Est ce que cela suffit

Si non quand faire les unload winsock(X)

Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 févr. 2007 à 11:16
Je ne sais pas si le fait que le client distant ferme la connection suffise. Pour etre sur de fermer la connection locale, avant le unload, rajoute un Winsock1(index).Close

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
26 févr. 2007 à 11:24
je fais un close sur le unload aussi .. mais comme l'appli n'est pas fermé souvent, voir jamis en ce momeent elle et fermé à cause du pb de mémoire mais en temps normal elle n'est pas censée être fermée...

Merci
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 févr. 2007 à 11:29
Non je disais :

Private Sub Winsock1_Close(index As Integer)
    Winsock1(index).Close
    Unload Winsock1(index)    If Winsock1.Count 0 Then Index_Sock 0
End Sub

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_got Messages postés 139 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 15 mars 2016
26 févr. 2007 à 11:36
oki desolé... :-p
oui c plus lmogique comme  ça ;-)
0
Rejoignez-nous