sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006
-
3 févr. 2005 à 15:06
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006
-
4 févr. 2005 à 15:29
Bonjour,
Je crée plusieur instance d'une petite classe qui ne contient qu'un
evenement et quelque petite variable Rectangle, float ,.. enfin rien de
bien monstrueux niveau memoire...
Le problème vient quand je regarde la taille du processus qui augment de 30 à 40Mo à chaque création d'un de ces objets
J'ai donc essayer un GC.Collect après chaque nouvelle instance ce qui a
permis de diviser par 3 ou 4 ce nombre ce qui fait que chaque instance
consomme encore 10 Mo.
Est-ce que quelqu'un sais comment quelque petite variable peuvent consommer autant de memoire ou comment eviter ce problème ?
Ah oui, j'ai utiliser la reflection pour trouver les type de mes classe
et les allouer via CreateInstance.. je ne sais pas si ça influence le
résultat. D'après mes test ça n'influence que très peu
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 3 févr. 2005 à 17:07
<!--StartFragment --> 30 a 40 Mo par instance ? Waouh. Effectivement.
Elle contient quoi cette classe ? Parce que la c'est vraiment impressionant !
Enfin, si un GC.collect te permet de recuperer 30 Mo sur un seul object, c'est qu'il doit quand meme y avoir beaucoup de chose dedans, non ?
Poste nous des bouts de code pour qu'on puisse voir ce qui cloche
A la limite, essaie de voir avec le CLR Profiler, les choses qui pourraient clocher.
Type t=(Type)e.Button.Tag;
PrintTemplateItem NewItem=(PrintTemplateItem)Activator.CreateInstance(t,null);
PTV.PT.AddItem(NewItem);
Le type du template line est dans le tag du bouton
Sinon le programme CLRProfiler est vraiment terrible... mais je ne
trouve pas d'ou vien le prob... j'ai chercher une heure mais je
,'arrive pas à tracer ce qui se passe quand je crée l'instance...
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 3 févr. 2005 à 20:58
Apparement ce n'est pas un problème au niveau de la classe mais plutôt
du moment ou je selectionne l'element dans le programme. On dirait
qu'il y a comme une fuite memoire
voila le code executer
public bool SelectItem(PrintTemplateItem Item)
{
if (Item!=null && !PT.ContainsItem(Item))
return SelectItem(null);
if (PT.SelectedItem!=Item)
{
if (base.Events[PrintTemplateView.EVENT_SELECTEDITEMCHANGING]!=null)
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 4 févr. 2005 à 01:04
Voilà j'ai trouver d'où ça vennait mais je ne sais pas comment je
pourrais faire pour resoudre le problème. c'est au moment ou je crée
une image pour dessiner l'objet.