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

Composants Java Discussion :

Vider une JList : comment libérer les objets de la liste?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Par défaut Vider une JList : comment libérer les objets de la liste?
    Bonjour
    J'ai besoin de vider une JList qui contient des objets. Mais j'aimerai aussi que chaque objet de la liste soit détruit.

    Est ce que la méthode clear() du modèle libère bien les objets de la liste?
    J'ai aussi tenté de faire ce bout de code mais je sais pas si ça fonctionne comme ça en java pour libérer ces objets...


    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    DefaultListModel model = (DefaultListModel) getLstCompte().getModel();
    		for(int i = 0;i< model.getSize(); i++) {
    			//récupère un element
    			AccountData compte = (AccountData) model.get(i);
     
                           model.removeElement(compte);
    			compte = null;
    		}

    Merci d'avance

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    En java, il y a ce que l'on appelle le Garbage Collector.

    Ce mécanisme supprime automatiquement tous les objets déréférencés. Autrement dit, si les objets de ta JList ne sont plus référencés nul part dans ton programme, le fait de vider ta liste aura pour conséquence de tout supprimer.

    Après il faudrait connaître tout ton code pour savoir si c'est effectivement le cas.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Par défaut
    Merci. Ouais j'avais vu ça pour le garbage collector mais est ce qu'il fonctionne uniquement pour les objets à null ou bien pour n'importe quel objet qui n'aurait plus aucun lien avec personne?

    Par exemple si je remplis ma liste dans une procédure remplir
    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
     
    private void remplir() {
    AccountData compte = new AccountData();
    //initialise l'objet
    ...
     
    //ajout à la liste
    model.addElement(compte);
     
    compte = new AccountData();
    //initialise l'objet
    ...
     
    //ajout à la liste
    model.addElement(compte);
     
    compte = new AccountData();
    //initialise l'objet
    ...
     
    //ajout à la liste
    model.addElement(compte);
    }
    puis que je vide ma liste à partir d'une autre procédure vider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private void vider() {
         model.clear();
    }
    Les objets de la liste sont donc plus utilisés nul part, est ce qu'ils seront détruits ou je dois les passer à null pour que le garbage les repère?

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Citation Envoyé par Hell Voir le message
    Merci. Ouais j'avais vu ça pour le garbage collector mais est ce qu'il fonctionne uniquement pour les objets à null ou bien pour n'importe quel objet qui n'aurait plus aucun lien avec personne?
    Le garbage s'occupe de n'importe quel objet qui n'a plus de lien avec personne. Il ne s'intérèsse pas aux objets à null.
    Citation Envoyé par Hell Voir le message
    Les objets de la liste sont donc plus utilisés nul part, est ce qu'ils seront détruits ou je dois les passer à null pour que le garbage les repère?
    Si les objets ne sont plus référencés nulle part, il devient possible que le garbage les récupère. Inutile de les mettre à null ; d'ailleurs, le simple fait que tu puisses le faire tant à indiquer qu'ils restent référencés quelque part... mais bon...

    Attention que le garbage fait ce qu'il veut avec les objets ramassables. C'est à dire qu'il peut tout aussi bien ne rien faire, les supprimer de la mémoire, les déplacer... La seule garantie, ou à peu près, et que si ton programme a besoin de mémoire, alors la JVM va demander au garbage de faire ce que tout le monde souhait qu'il fasse.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    310
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 310
    Par défaut
    Merci pour ces précisions
    Non non je mettais à null mes objets car je suis habitué à le faire avec delphi lorsque je libère un objet.

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

Discussions similaires

  1. Comment ramener les objets associés dans une projection?
    Par Wise_Sherkaan dans le forum Hibernate
    Réponses: 1
    Dernier message: 21/05/2013, 13h03
  2. Comment vider une JList ?
    Par khadi8 dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 10/05/2012, 15h31
  3. [AC-2007] Comment rechercher les objets non utilisés dans une application
    Par Triton972 dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/12/2011, 05h45
  4. Réponses: 15
    Dernier message: 21/05/2010, 00h36
  5. Réponses: 2
    Dernier message: 23/03/2009, 13h25

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