Liberaton d'espace mémoire

Résolu
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005 - 6 oct. 2004 à 14:12
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005 - 7 oct. 2004 à 16:45
J'ai une winform dans laquelle j'utilise un tableau de tableau et lorsque je ferme cette form l'espace utilisé en memoire par les tableaux ne se libere pas. quelqu'un aurait il une idée?

16 réponses

Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
7 oct. 2004 à 11:59
en théorie si tu passe tes tableaux = Null
le garbage collector devrait libérer la mémoire....

en théorie...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
3
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 16:37
Avec la mise à "null" de tous mes tableaux plus le forcage du garbage colector j'arrive à liberer une bonne partie de l'espace mémoire utilisé c'est déjà ca.

Merci à tous pour vos réponses
3
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 22
7 oct. 2004 à 13:29
System.GC.Collect()

ca force le Garbage collector a faire son boulot.

::|The S@ib|::
MVP C#.NET
1
guigfs Messages postés 34 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 30 mars 2006
6 oct. 2004 à 17:37
Salut,
Sur l'événement Leave de ton formulaire essai ceci:
monTableau1.Dispose()
monTableau2.Dispose()
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
6 oct. 2004 à 17:55
Bonjour,
Et bien en fait je n'est pas acces à cette methode :/
Voici ma déclaration de tableau :

private System.Drawing.PointF[][] tTabTab = new PointF[14][];

ceci est déclaré dans ma winform nomée Graphique.

j'ai bien essayé tTabTab = null mais c'est pareil.
Et j'aussi testé ca inséré dans : protected override void Dispose( bool disposing )

for (int i = 0; i < tTabTab.Length; i++)
{
tTabTab[i] = null;
}
tTabTab =null;

mais rien ne marche.

C'est une winform ( Graphique ) que j'appelle d'une autre winform ( Synthese ), j'ai aussi essayé de faire Graphique.Dispose() à parti de la winform ou je la declare mais c'est pareil.
je sais pas si c'est tres clair ...

merci quand meme
0
guigfs Messages postés 34 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 30 mars 2006
6 oct. 2004 à 18:04
Le fait de mettre à nul tout tes éléments revient a vider des cases mais pas à supprimer ces cases.
Or pour vider la mémoire, il faut supprimer ces cases et la solution est normalement d'appeler le destructeur de l'objet (ici tTabTab) à l'aide de la méthode normalement de la methode Dispose() mais je regarde autre chose
0
guigfs Messages postés 34 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 30 mars 2006
6 oct. 2004 à 18:05
Je viens de remarquer que tu as oublié les parenthèses à la fin de ta ligne :
private System.Drawing.PointF[][] tTabTab = new PointF[14][]();

regarde si cela ne fais rien
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
6 oct. 2004 à 18:08
et bien ca me fait une erreur : une methode est attendue
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
7 oct. 2004 à 07:38
Hello,
quelle méthode utilises-tu pour affirmer que c'est l'espace mémoire de ces tableaux qui n'est pas libéré?
Amicalement, SharpMao
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 08:59
Et bien je regarde l'espace mémoire utilisé grace au gestionnaire de taches windows. Et j'ai essayé d'afficher ma form sans les tableaux et la pas de probleme. C'est des tableaux assez gros en fonction de divers parametre rentré ca va de quelques Mo à plusiseurs centaines...
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 12:14
Oui comme tu dis en théorie ;)
Y'a t'il un moyen de forcer le garbage collector à s'executer, j'ai vu que vous parliez d'une "classe GC" j'ai fouillé un peu mais j'ai pas trouvé comment l'utilisé un using peut etre?
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
7 oct. 2004 à 12:24
non le Garbage Collector (GC) s'execute tout seul comme un grand quand tu fais un Objet.Dispose();

Tu fais un dispose de ta form...???

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 13:29
Oui j'ai essayé le dispose de ma form ( ajout d'un bouton et Object.Dispose(); dans l'evenement ) mais ca change rien et si je ne me trompe pas quand je quitte ma form en clickant sur la croix le dispose est appellé
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 13:54
Et bien ca me permet juste de recupérer quelques Mo mais rien de significatif :(
0
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 22
7 oct. 2004 à 16:39
Valide les réponses

::|The S@ib|::
MVP C#.NET
0
Athalus Messages postés 131 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 7 juillet 2005
7 oct. 2004 à 16:45
Chef OUI Chef ;)
0
Rejoignez-nous