Consommation mémoire VB6

pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 - 27 mai 2009 à 10:30
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 - 27 mai 2009 à 11:42
Bonjour à tous,

Je suis en train de tenter de régler des problèmes de consommation mémoire sur une appli VB6

Cette appli se connecter à une base SQL Server et traite un ensemble de ligne dans une fichier texte pour les intégrer dans les tables de la base.

Mon problème est le suivant. Au fur et à mesure de l'avancement du traitement, la consommation mémoire de l'appli augmente.
Après quelques recherches, j'ai rajouté les destructions d'objet qui manquaient (set xx = nothing), j'ai modifié la portée de certaines variables, j'ai optimisé mes requetes... mais voilà, il y a encore une perte mémoire...

en faisant du pas à pas, j'ai pu noté que l'entrait dans des fonctions présentes dans des modules généraient l'allocation de 4ko supplémentaire sans libération à la sortie de la fonction.

D'autre part, régulièrement je crée un recordset avec l'instruction "New", je l'ouvre, effectue mes traitements, le ferme (Close) et le détruit => nothing.
Je constate que la ram occupée par cet objet n'est pas libérée immédiatement non plus !?

Au début de la fonction principale d'intégration de mes données, j'ai mis un point d'arret, j'en ai fait de même à la sortie de la fonction. Au début et à la fin, je note la ram occupée par l'appli... et elle augmente alors que tous mes objets sont bien détruits ...

D'un point de vue globale quelqu'un peut il me dire quand la ram est réellement libérée sous vb ?

Quels autres axes puis je explorer pour combler ces "fuites" mémoires ?

bref, je tourne en rond...

Je voudrais bien réécrire en .Net mais à ce jour, c'est impossible....

bref, j'en appelle aux idées de chacun

merci

Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
27 mai 2009 à 11:26
genre de choses a ne pas tester dans l'IDE, on a un environnement pas clair...

utilises tu des APIs graphiques ? (CreateCompatibleDC, etc...)
pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
27 mai 2009 à 11:42
salut,
oui je sais que tester dans l'IDE n'est pas top mais pas trop le choix....
concernant ta question, non, je n'utilise pas d'APIs graphiques...
par contre il est vrai que j'ai pas mal de classe instanciées puis détruites...
ces mêmes classes instancient également d'autre classe... qui elles aussi sont détruites lorsque la classe principale est détruite...

Sais tu s'il existe un outil du type "dottrace" pour vb6 ?

En tout cas, merci de t'interresser à mon pb...
Pat

 Don't Worry , Be Happy

<hr />lorsque le problème est résolu, pensez Réponse Acceptée
Rejoignez-nous