cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 2013
-
5 juil. 2011 à 12:58
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 2014
-
8 juil. 2011 à 11:38
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?
cs_veler
Messages postés723Date d'inscriptiondimanche 26 novembre 2006StatutMembreDernière intervention23 janvier 20132 6 juil. 2011 à 09:26
Bonjour,
Alors, avec FxCop, il y avait juste un problème, mais c'est lui qui allait provoquer une telle fuite de mémoire.
Avec Clr Profiler, j'ai put constaté que ce qui reste en mémoire sont les Workflow :
Dans ce Backgroundworker, je charge des fichier XAML dans un System.Activities.Presentation.WorkflowDesigner ancré dans un ElementHost. Et pour des raison technique, lors du chargement du workflow je doit passer par un Délégué pour que ça se fasse sur le thread principale (sinon ça ne fonctionne pas).
Mais pourtant j'ai bien fait attention de Disposer chaque designer avant de passer au suivant
Le problème viendrait-il de ce fameux designer chargé?
J'avais essayé avec GC.Collect mais ça ne change absolument rien.