mecano14
Messages postés35Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention12 août 2006
-
12 août 2006 à 15:24
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
12 août 2006 à 18:42
Bonjour;
Je fais tourner ce bout de code dans un Thread()
Lorsque j'utilise RotateFlip, la mémoire augmente continuellement.
Apparement RotateFlip doit allouer de la mémoire pour fonctionner mais elle ne semble pas être liberée après.
Quand je met mon RotateFlip en commentaire, la mémoire n'augmente plus et mon process reste stable.
Y'at-il une operation à effectuer après un RotateFlip pour éviter cette fuite mémoire?
vid = video.GetBitMap();
Bitmap image = new Bitmap(cam.Width, cam.Height, cam.Stride, PixelFormat.Format24bppRgb, vid);
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
cs_badrbadr
Messages postés475Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention 3 novembre 20081 12 août 2006 à 17:00
essaie :
image.Dispose();
image = null;
tu pourras tjrs demander de temps a autre au Collecteur de Poubelle de passer faire sa job.
C'est GC.Collect() si ma mémoire est bonne.
Le problème peut très bien venir de ta classe video.
Je te conseille d y aller par élimination pour déterminer quelle ligne est la responsable de la fuite.
mecano14
Messages postés35Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention12 août 2006 12 août 2006 à 16:57
Oui mais si je declare mon Bitmap en dehors de mon Thread j'aurai toujours la même image.
Je ne sais pas assigner un IntPtr (variable vid dans mon code) à un Bitmap autrement que par son contstructeur.
Je pourrai declarer le Bitmap avant en effet mais je ne sais pas comment faire autrement que par le constructeur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
mecano14
Messages postés35Date d'inscriptionsamedi 26 février 2005StatutMembreDernière intervention12 août 2006 12 août 2006 à 17:06
[auteurdetail.aspx?ID=124151 badrbadr]
Le soucis c'est que je suis dans une méthode et que je dois faire un return image
Si je fais le dispose il va me peter une erreur
Je vais tenter de le faire à l'arrivée au cas ou.
Sinon c'est bien ca la cause car lorsque j'enleve la ligne de RotateFlip, la mémoire n'augmente plus...
[auteurdetail.aspx?ID=228792 ducker88]
J'ai fais comme tu as dis mais la mémoire augmente toujours.
Je reprécise que si je met en commentaire la ligne suivante, la mémoire n'augmente plus
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
cs_badrbadr
Messages postés475Date d'inscriptionjeudi 19 juin 2003StatutMembreDernière intervention 3 novembre 20081 12 août 2006 à 18:14
Il me semblait que
Bitmap image faisait une reservation mémoire et qu'ensuite le new utilisait cette mémoire.
Non, newinstancie l'objet et le place en mémoire. La variable image n'est qu'une référence vers cet objet en mémoire.
Le Collecteur de Poubelle ???????? Traduction mot pour mot :) En fait, le terme français est ramme miette.
[:D] @++