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

AWT/Swing Java Discussion :

[JProbe] Recherche de Memory Leak sur des Items de listes


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Par défaut [JProbe] Recherche de Memory Leak sur des Items de listes
    Bonjour,

    Cela fait une bonne semaine que je me casse la tête à essayer de comprendre pourquoi j'ai des memory leaks sur des items de liste. Après recherches par JProbe et sur le net, j'en ai conclu que ça pouvait 'aussi' venir d'un bug de la jdk, mais qui a priori serait corrigé dans la 6.

    Il s'agirait d'un problème sur les CellRendererPane, contenus dans les JList et les JComboBox qui ne relâche pas les composants qu'il contient à la destruction de l'objet.

    Il existe alors un code permettant de palier au problème, quelque chose dans se goût là (cf. http://bugs.sun.com/bugdatabase/view...bug_id=6542439) :

    Code : 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
     
        private CellRendererPane getRenderer() 
        {
            if (cellRendererPane == null) 
            {
                for (int i=0; i<getComponents().length; i++) 
                {
                	java.awt.Component c  = getComponents()[i];
                    if (c instanceof CellRendererPane) 
                    {
                    	cellRendererPane = (CellRendererPane)c;
                        break;
                    }
                }
            }
            return cellRendererPane;
        }
     
        protected void paintComponent(java.awt.Graphics g) 
        {
            super.paintComponent(g);
            CellRendererPane renderer = getRenderer();
            if (renderer != null)
                renderer.removeAll();
        }

    Bon jusque là tout va bien. Sauf que je fais des tests avec JProbe, et que je me retrouve avec toujours le même soucis, à savoir que mes items sont toujours chargés, même une fois que la fenêtre contenant la liste les contenant est fermée.

    Je vous envoie une copie d'écran de la trace que me renvoit JProbe.

    Est-ce que vous pouvez déjà me confirmer qu'il s'agit bien d'un soucis lié au bug décrit ci-dessus ? Enfin, j'aimerais comprendre pourquoi mes items ne sont pas déchargés (IHMItemFavori).






    En vous remerciant infiniment, vous me retireriez une bonne épine du pied !

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    j'ai bien l'impression que ça correspond à ce bug. As-tu essayé les workaround fournis par le posteur ? Cela nécessite de surcharger l'UI et d'y copier coller le code.

    EDIT : enfin il y a aussi les questions de base : le gc est-il passé ? la JFrame a-t-elle été disposée ? Plus aucun pointeur vers les composants ?
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre très actif
    Avatar de if_zen
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 275
    Par défaut
    Bonsoir,

    Merci de t'être penché sur mon cas. J'ai été longtemps persuadé que le problème venait de ce bug, et j'ai un peu de mal à intepréter les résultats de JProbe. Seulement ici, apparemment, il s'agissait d'une référence qui restait encore sur une partie de la fenêtre. Du coup, le reste n'était pas passé à la moulinette du gc. Une simple référence 'oubliée' peut donc entraîner de lourdes conséquences donc...
    Je ne considère pas avoir vraiment compris ce qu'il s'est passé, et notament expliquer les résultats de JProbe, mais j'ai fini par réussir à déréférencer ces composants en libérant autre chose, donc on va passer tout ça en sujet résolu !

    En tout cas merci beaucoup.

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

Discussions similaires

  1. [FASTMM4] Memory Leaks sur HelpIntfs.pas
    Par Nono23 dans le forum Outils
    Réponses: 3
    Dernier message: 12/11/2010, 16h32
  2. Réponses: 2
    Dernier message: 17/12/2009, 09h54
  3. Afficher les noms des elements sur des item.
    Par Viscapon dans le forum NetBeans
    Réponses: 1
    Dernier message: 08/05/2008, 11h25
  4. Detecter les memory leak sur Borland C++
    Par Bouillou dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/03/2008, 05h20
  5. OnMouseEnter et OnMouseLeave sur des items d'une collection
    Par petitprince dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/09/2007, 20h57

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