Libération Mémoire VB6

Bozzo31 Messages postés 1 Date d'inscription mardi 14 janvier 2003 Statut Membre Dernière intervention 29 novembre 2006 - 29 nov. 2006 à 19:24
wortmany Messages postés 8 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 22 mai 2012 - 30 nov. 2006 à 15:16
Bonjour,
Je gère de gros volume de données via des collections en VB6.
Lorsque je souhaite libérer la mémoire via l'instruction "SET MaCollection = Nothing", l'instruction peut prendre beaucoup de temps (1 minute !).
Avez-vous connaissance de ce problème et éventuellement une solution de contournement ?
Merci par avance,

7 réponses

Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
29 nov. 2006 à 20:21
Salut,
Tu as combien d'éléments dans ta collection ?
Je mets des Set MonObjet = Nothing chaque fois que je n' ai plus besoin de cet objet et ça n'a jamais alourdi ni ralenti mes progs, bien au contraire.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 nov. 2006 à 20:29
Salut,

avec 100 000 données, c'est quasi instantanné :

Sub qkfjdskfg()
    Dim cCol As New Collection
    Dim i As Long
    
    For i =  0 To 100000
        cCol.Add i, CStr(i)
    Next i
    
    Set cCol = Nothing
    
End Sub

~<small> Mortalino </small>~

@++

<hr width ="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
29 nov. 2006 à 20:32
mortalino : forcément, avec des long ca va très vite !

Par contre, dès que tu as à gérer des objets plus compliqués qui contiennent eux même des collections, ou des recordsets ouverts par exemple, c'est déjà beaucoup moins rapide !

Comme le dit Dolphin boy, essaye de détruire tes objets dès que tu n'en a plus besoin !

Les collections, c'est bien pratiques, mais c'est loin d'être rapide dès qu'on utilise des objets un peu lourd en grande quantité ! Peut-être devrais-tu revoir ton architecture et passer par des tableaux, moins souples à utiliser, mais bien plus rapides !
0
pape0 Messages postés 132 Date d'inscription mercredi 18 février 2004 Statut Membre Dernière intervention 1 septembre 2014
30 nov. 2006 à 13:54
Même si c'est long il faut penser a le faire, dèsqu'un objet n'est plus utiliser.

Sinon c'est à la fermeture de l'application que c'est fait.

<hr />
Aller voir ces sites
http://www.pape-bleu.net
 
 ou http://www.papebleu.net.
0

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

Posez votre question
wortmany Messages postés 8 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 22 mai 2012
30 nov. 2006 à 15:03
J'ai le meme probleme avec mes objects en faite quand tu lui dit blabla = nothing il le mais en memoire et le fait réélement plus tard, il faut utiliser la classe "garbage collector" pour lui dire de ne pas attendre reste a savoir comment on l'utilise !!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 nov. 2006 à 15:06
wortmany : ceci n'est valable que sous .net, en vb6, les objets sont directement désalloué, pas besoin d'attendre que le garbage collector fasse son boulot !
0
wortmany Messages postés 8 Date d'inscription jeudi 21 octobre 2004 Statut Membre Dernière intervention 22 mai 2012
30 nov. 2006 à 15:16
je m'en suis apercu apres désoler
0
Rejoignez-nous