IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Silverlight Memory Leak TabControl


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 25
    Par défaut Silverlight Memory Leak TabControl
    Bonjour,

    Je rencontre un problème de libération de la mémoire dans mon application Silverlight 4. J'ai lu plusieurs post mais j'ai du mal à comprendre le bug...

    Pour un test, j'ai créé 1 TabControl et 3 Boutons
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <sdk:TabControl Grid.Row="2" Grid.ColumnSpan="3" x:Name="TabMain"/>
    <Button Content="Add" Margin="187,4,0,0" Click="buttonAdd_Click" />
    <Button Content="Delete" Margin="268,4,0,0"  Click="buttonDelete_Click" />
    <Button Content="Force GC" Click="buttonForceGC_Click" />

    Dans mon code behind voici, l'implémentation des méthodes _Click:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    private void buttonAdd_Click(object sender, RoutedEventArgs e)
            {
                for (int i = 0; i <= 1500; i++)
                {
                    TabItem myItem = new TabItem() ;
                    TabMain.Items.Add(myItem);
                    TabMain.SelectedItem = myItem;
                }
            }
     
            private void buttonDelete_Click(object sender, RoutedEventArgs e)
            {
                for (int i = 1500; i >= 0; i--)
                {
                    TabItem myItem = (TabItem)TabMain.SelectedItem;
                    myItem.Content = null;
                    myItem.Header = null;
                    TabMain.Items.Remove(myItem);
                    GC.SuppressFinalize(myItem);
                    GC.Collect();
                }
            }
     
            private void buttonForceGC_Click(object sender, RoutedEventArgs e)
            {
                GC.Collect();
            }
    Ensuite, je lance l'application : au début j'ai un processus (IExplorer) à ~97.000 Ko. Je clique sur le bouton Add et je passe à ~220.000 Ko.
    Ensuite je clique sur Delete et IExplorer passe à ~160.000Ko et je n'ai plus de TabItem dans le TabControl.... Et quand je clique sur Force GC la mémoire ne descend pas. Pourquoi je ne redescens pas au 97.000 Ko du début?

    Les TabItems sont t'ils toujours en mémoire à cause d'un event... ou parce qu'ils ne sont pas déclarer dans un DataTemplate.....

    Le test est fait sur des TabItems vide mais normalement je dois intégrer des UserControl qui demande plus de ressources.

    J'avouerais que je ne sais plus trop ou chercher sur le sujet, si quelqu'un a déjà eu ce problème ou connait la solution je serais enchanté que vous m'aidiez.

    Merci,

    Julien,

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Par défaut
    J'ai eu un problème similaire avec le menu contextuel de SL qui m'a amené à tout simplement le bannir... Sans avoir jamais compris prquoi.
    Si tu trouves une explication, ça m'intéresse.

    A+
    Christophe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Silverlight Memory Leak
    Par Archeone dans le forum Silverlight
    Réponses: 1
    Dernier message: 31/01/2011, 09h05
  2. [MFC] Thread & memory leaks
    Par Racailloux dans le forum MFC
    Réponses: 7
    Dernier message: 15/03/2005, 12h44
  3. Memory leak en C/C++
    Par Roswell dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 07/07/2004, 19h41
  4. [MFC] A la chasse au memory leak
    Par Yabo dans le forum MFC
    Réponses: 17
    Dernier message: 27/06/2004, 17h35
  5. Réponses: 7
    Dernier message: 26/02/2004, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo