Libérer de la mémoire

cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 - 5 juil. 2011 à 12:56
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 7 juil. 2011 à 19:10
Bonjour,

J'ai un projet qui consomme en temps normal 90Mo de RAM.
J'ai un Backgroundworker qui, à la suite d'accès au disque dur, de calcul, de conversion... fait monter la mémoire à 150Mo.
Le problème est que malgré qu'à la fin de son exécution, je vide toute les variables et utilise tous les "Dispose()" possible, la mémoire reste à 150Mo.
Bien entendu, si je réexécute le BackgroundWorker, la mémoire monte cette fois-ci à 210Mo, et ainsi de suite.

Existe-t-il un moyen efficace de libérer la mémoire?

Merci d'avance

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
5 juil. 2011 à 22:28
Bonjour,

Tu as essayé System.GO.Collect pour forcer l'exécution su GarbageCollector ?

Mon site
0
cs_veler Messages postés 723 Date d'inscription dimanche 26 novembre 2006 Statut Membre Dernière intervention 23 janvier 2013 2
5 juil. 2011 à 22:47
Bonjour,

Oui, je suis tombé sur cette documentation :) mais malgré que je me suis assuré que l'objet à libéré était bien isolé (n'avais plus aucune référence possible), la mémoire ne se libère pas.
Donc soit le problème vient d'ailleurs (j'ai un Invoke dans ce thread, pour appeler une fonction sur le thread principal, je sais pas si ça joue), soit l'objet a encore des références. Pourtant, avec un Obj.Dispose et Obj = Nothing ça devrait aller non?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
7 juil. 2011 à 19:10
Bonjour,

Les evenements peuvent aussi faire des références "oubliées"

Sinon, le GC gère plusieurs liste, des objets récents aux plus anciens, donc il arrive parfois que cette libération ne se fasse que sur certains objets.

Mon site
0
Rejoignez-nous