begin process at 2012 02 08 21:18:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Mémoire

 > 

Probleme de Mémoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme de Mémoire

mardi 27 janvier 2009 à 10:06:02 | Probleme de Mémoire

Tolliap

Bonjour,

J'ai un problème de taille dans tous les sens du terme...

J'ai créé un programme de gestion pour une entreprise, lors le l'ouverture de celui ci il pèse en mémoire 30 Mo
Après plusieurs ouverture de divers formulaire mon application ne cesse de grossir en mémoire, jusqu'à arrivé a saturation (environ 250mo).
J'aimerai savoir si vous connaissais un méthode pour vider le mémoire... apparemment, mes formulaire ne libéré pas la mémoire après sa destruction.
(je fait un dispose suivi d'un form = null)

Aprés quelques recherche j'avais trouver cette methode que je lance au démarage et que je fait tourner en boucle :



  while (!event_.WaitOne(PERIOD_IN_MS, false))
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
            }


Mais sans succées.
Esque je doit mettre tous mes composant a null pour le  garbage collection se fasse bien?

merci de vos réponse

Alex

Qui ne tente rien, n'a rien
mardi 27 janvier 2009 à 21:13:13 | Re : Probleme de Mémoire

kerma26

Salut,

Alors tout d'abord, quand tu ouvres tes formulaires, as-tu pensé à les fermer ?
Parce que il ne suffit pas de cliquer sur la croix rouge, il faut aussi que tu fasse un maFenetre.close(), enfin je ne sais plus la syntaxe exacte.
Donc déjà vérifie que tu ferme bien comme il faut chaque formulaire.
Puis deuxièmement as-tu debugger ton programme pas à pas pour voir si tu n'a pas une boucle infinie (while/for).

Voila désolé je ne peu pas t'aider plus que ça, donc j'espère que ça résoudra ton problème.

bye.
mardi 27 janvier 2009 à 21:36:45 | Re : Probleme de Mémoire

Bidou

Administrateur CodeS-SourceS
Bonsoir,
De base, le framework .NET occupe environ 20Mo en mémoire.
Concernant la méthode Collect de GC, elle ne doit pas être utilisée par "des amateurs": le framework .NET se charge de tout, faut pas toucher à ça SAUF si on sait exactement ce qu'on fait, et à mon avis celui qui a pondu la méthode que tu proposes ci-dessus le ne sait pas...

Concernant ton problème, il faut voir si y'a pas des objets qui ne sont pas disposés, des boucles infinies, etc. Sans code on va pouvoir aider et comme tu ne peux pas poster la solution au complet (...)



-Blog-
-Site Perso-
mercredi 28 janvier 2009 à 00:10:14 | Re : Probleme de Mémoire

Tolliap

Tu as raison, je ne peut pas poster la solution complète vous comprendrai pourquoi... En ce qui concerne les boucle je ne pense pas que c'est le probleme... Par contre j'ai lu sur le forum que les dataset ne ce détruise pas completement, (http://www.csharpfr.com/forum/sujet-MEMOIRE-AUGMENTE_1234436.aspx) et vu que je créer souvent des dataset, je pense que je vais faire des recherche de ce coté. Merci pour vos réponses. Alexandre

Qui ne tente rien, n'a rien
samedi 31 janvier 2009 à 16:44:11 | Re : Probleme de Mémoire

coq

Administrateur CodeS-SourceS
Salut,

Le type DataSet maintient peut être (je dis bien peut être, je ne me suis jamais penché sur ce type en détail) des données statiques, mais de la à saturer j'en doute.
Après il faut voir ce que tu fais avec les données du DataSet, et notamment si tu ne maintient pas des références aux DataTable etc



/*
coq
MVP Visual C#
CoqBlog
*/
samedi 31 janvier 2009 à 18:29:49 | Re : Probleme de Mémoire

Tolliap

si tu ne maintient pas des références aux DataTable etc Sa veut dire quoi?

Qui ne tente rien, n'a rien
samedi 31 janvier 2009 à 18:42:38 | Re : Probleme de Mémoire

coq

Administrateur CodeS-SourceS
Exemple (idiot mais c'est juste pour illustrer clairement) :

class MaClasse
{
  private DataTable maTable;

  public MaClasse(DataSet ds)
  {
    maTable = ds["Toto"];
  }

...
}

...
MaClasse maClasse;
private MaMethode()
{
   DataSet mesDonnees = ...;
   maClasse = new MaClasse(mesDonnees);
   mesDonnees.Dispose();
   // Arrivé ici, une référence est maintenue (dans l'instance de MaClasse) sur une des instance de DataTable qui faisaient partie du DataSet, l'appel à Dispose sur le DataSet ne détruit pas les instances de DataTable (elles deviennent élligibles à la finalisation si elle ne sont plus référencées ailleurs)
}


Enfin, ce n'est qu'un exemple de problème éventuel.


/*
coq
MVP Visual C#
CoqBlog
*/


Cette discussion est classée dans : ouverture, formulaire, probleme, mémoire, gc


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec un input type="file" [ par Volfield ] Bonjour, J'ai fais une page formulaire.aspx en c# (ASP.NET) avec un formulaire qui contient un champ . Quand je valide le formulaire, je vais sur la p multi ouverture formulaire [ par nounours21_6 ] Bonjour,je fais un programme qui affiche dans un form (style msn) une alerte qu'on a programmé...mais ce formulaire ne peut pas s'ouvrir plusieur en m Probleme avec form hérité [ par Kbitnik ] Bonjour à tous,j'ai un petit problème, je m'explique :j'ai créer un formulaire  avec 4picturebox une en haut en bas a gauche et une a droite de façon probleme avec showdialog [ par cudenetf ] bonjour,j'aimerais utiliser la methode showdialog pour un formulaire qui appelle un autre formulaiur(avec showdialog justement)mais le pformulaire app probleme reduction formulaire [ par cudenetf ] bonjour,j'ouvre un formulaire "principal" a partir duquel j'appelle d'autres formulaire...QUand je quitee un formulaire "fils" (pas mdi) ,je le cache Couleur transparente [ par LordOfTheShadow ] Hello,Je me traîne un probleme depuis un petit moment... J'ai créé un UserControl sur lequel je dessine (ce n'est pas une Bitmap c'est un Graphics). U Probleme de databind avec formulaire de saisie [ par laurentFriedli ] Bonjour, je travaille en C# visual studio 2003 j'utilise un datagrid avec un formulaire de saisie/maj. j'essaie de poser un warning lorsqu'on entre d probleme de focus [ par cudenetf ] bonjour,j'ai un formulaire qui lance un autre formulaire (composé uniquement de labels).Je ne veux pas que le premier formulaire disparaisse, je veux Probleme d'ouverture de fichier [ par pyr0123 ] Bonjour,Je voudrais ouvrir un fichier texte (rtf)  mais voici mon probleme : "Format de fichier non valide."mon code : private void Ouvri Ouverture formulaire 1er plan [ par Moomoon07 ] Salut !Lorsque je clique sur un bouton (sur mon formulaire principal) pour ouvrir un autre formulaire, ce dernier se met souvent dans la barre des tac


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales