Liberaton d'espace mémoire

Résolu
Signaler
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005
-
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005
-
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

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
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..."
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

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
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
23
System.GC.Collect()

ca force le Garbage collector a faire son boulot.

::|The S@ib|::
MVP C#.NET
Messages postés
34
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
30 mars 2006

Salut,
Sur l'événement Leave de ton formulaire essai ceci:
monTableau1.Dispose()
monTableau2.Dispose()
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

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
Messages postés
34
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
30 mars 2006

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
Messages postés
34
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
30 mars 2006

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
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

et bien ca me fait une erreur : une methode est attendue
Messages postés
1024
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
7 juin 2010
66
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
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

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...
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

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?
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
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..."
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

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é
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Et bien ca me permet juste de recupérer quelques Mo mais rien de significatif :(
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
23
Valide les réponses

::|The S@ib|::
MVP C#.NET
Messages postés
131
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
7 juillet 2005

Chef OUI Chef ;)