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 :

Problème SWING et GarbageCollector


Sujet :

AWT/Swing Java

  1. #1
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut Problème SWING et GarbageCollector
    Voici une méthode de AudienceListModel (qui extends AbstractListModel) qui rafraichi le contenu.
    La liste (JList) est composée de JPanel (c'est une liste de panels).

    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
    public void refresh() {
            new Thread() {
     
                public void run() {
                    int oldSize = list.size();
                    try {
                        AudienceXML.getInstance().init();
                    } catch(Exception e) { }
                    List<AudienceElementPanel> temp = new ArrayList<AudienceElementPanel>();
                    for(XMLChannel ch : AudienceXML.getInstance().getList())
                        temp.add(new AudienceElementPanel(ch));
                    Collections.sort(temp);
                    list = temp;
                    fireContentsChanged(AudienceListModel.this, 0, Math.max(getSize(), oldSize));
                }
            }.start();
        }
    Comme vous pouvez le voir sur le code, pour rafraichir, je vire tout et recrée des Panels (AudienceElementPanel étend JPanel).
    Le problème, c'est qu'en mémoire, les anciens AudienceElementPanel restent (il suffit de voir la mémoire utilisée par le processus).
    Par contre, si j'enlève la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fireContentsChanged(AudienceListModel.this, 0, Math.max(getSize(), oldSize));
    , et bien le garbage collector fait bien son travail...

    Comment faire pour qu'il le fasse bien aussi même si je fais le fireContentsChanged?

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Y'a quelque chose qui a changé depuis ça: http://www.developpez.net/forums/vie...light=#2599363?
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par plegat
    Salut,

    Y'a quelque chose qui a changé depuis ça: http://www.developpez.net/forums/vie...light=#2599363?
    Non, c juste que c t pas dans la section interface...

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Personne ne sait?

    Et une autre question concernant le fireContentsChange, quelque soit le paramètre index0 et index1, ça rafraichit qd mm toute la liste...? c normal?

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Je n'ai jamais utilisé les AbstractListModel, mais pour le problème de garbage collector : si tu mettais à "null" tous tes objets non utilisés et faisais un appel explicite au garbage collector via "System.gc()", cela résoudrait peut-être le problème ?
    Je dis peut-être une bêtise car normallement, on ne doit pas faire appel à System.gc()... avis aux experts...

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par iohack
    Je n'ai jamais utilisé les AbstractListModel, mais pour le problème de garbage collector : si tu mettais à "null" tous tes objets non utilisés et faisais un appel explicite au garbage collector via "System.gc()", cela résoudrait peut-être le problème ?
    Je dis peut-être une bêtise car normallement, on ne doit pas faire appel à System.gc()... avis aux experts...
    Les variables ne sont plus utilisées dans mon programme (ne sont plus reférencées), mais elles restent reférencées par swing apparemment (donc le gc ne les supprime pas)...

  7. #7
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    T'as essayé de faire un ?

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Runtime.getRuntime().gc()
    Ceci ne garantit pas que le GC va ramasser tout de suite tes objets qui sont éliminables mais va en quelque sorte insérer la tâche dans une liste d'attente...

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par pollux007
    T'as essayé de faire un ?

    Ceci ne garantit pas que le GC va ramasser tout de suite tes objets qui sont éliminables mais va en quelque sorte insérer la tâche dans une liste d'attente...
    Oui, oui, j'avais déjà essayé, ça ne les vire pas...

  9. #9
    Membre émérite Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Par défaut
    Mets les objets que tu ne désires plus référencer à null

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par pollux007
    Mets les objets que tu ne désires plus référencer à null
    Oui, je sais...
    Et ça marche si je ne fais pas de fireContentsChanged(...)...
    mais pas avec...

    Swing doit donc mettre ces données en "cache", et garder des références dessus...
    Mais je ne sais pas désactiver ce cache...

  11. #11
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Personne ne sait???

Discussions similaires

  1. [AWT/Swing] Problème Swing Designer
    Par Eausport dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 24/02/2012, 22h59
  2. Problème Swing (RUN)
    Par rudash dans le forum NetBeans
    Réponses: 2
    Dernier message: 02/01/2012, 19h13
  3. Problème Swing / socket bloquant
    Par soussou92 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 12/05/2010, 13h29
  4. Problème SWING et Threads
    Par CamilleH dans le forum AWT/Swing
    Réponses: 14
    Dernier message: 12/06/2008, 11h19
  5. Problème JFileChooser et garbageCollector
    Par seiryujay dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 19/06/2006, 17h30

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