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

Collection et Stream Java Discussion :

Fonctionnement des WeakHashMap


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut Fonctionnement des WeakHashMap
    Bonjour,

    J'ai un petit problème de compréhension sur le fonctionnement des WeakHashMap.
    Quelqu'un pourrait-il m'expliquer quand est-ce qu'une clé est supprimée automatiquement?
    J'arrive pas à comprendre dans le JavaDoc la phrase :
    "A hashtable-based Map implementation with weak keys. An entry in a WeakHashMap will automatically be removed when its key is no longer in ordinary use."

    C'est quoi une "weak key" et c'est quoi un "ordinary use"?

    Merci!

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

    je ne suis pas sur, mais voila ce que je pense après avoir lu la doc.

    Tu sais surement qu'un objet sur lequel aucun autre objet n'a de référence sera collecté par le GC. Par exemple les objets contenus dans des listes sont référencés par l'objet qui instancie la liste. Donc tant qu'un objet est contenu dans une liste (ou une Collection, en Java), il est référencé et ne sera pas détruit.

    Dans une WeakHashMap ca ne marche pas comme ca. Tu as beau avoir tes clés contenues dans la WeakHashMap, les objets clé ne sont pas référencés, ou du moins ils sont susceptibles d'être collectés par le GC. Il faut donc que tu gardes des références dessus dans d'autres objets que la WeakHashMap afin de les maintenir en vie.

    La doc précise bien que le mécanisme ne fonctionne que sur les clés, et pas sur les valeurs. Il faut donc être prudent pour éviter les NullPointerException.

    J'avais lu de la doc sur ca, essaie de chercher "strong references" et "weak references". La WeakHashMap utilise justement des weak references qui n'empechent pas le GC de collecter les objets référencés faiblement.
    "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 éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Points : 722
    Points
    722
    Par défaut
    C'est bien ce qu'il me semblait...
    Moi aussi, c'est ce que j'avais cru comprendre, mais je n'en étais pas sûr et je voulais une confirmation.

    Merci beaucoup!

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

Discussions similaires

  1. Fonctionnement des API et autres fichiers DLL ???
    Par Forthman dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 07/02/2006, 14h15
  2. Fonctionnement des comparateurs de prix ?
    Par masseur dans le forum Services
    Réponses: 3
    Dernier message: 22/01/2006, 21h11
  3. Fonctionnement des attributions de droits sur table et bdd ?
    Par shako95 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/11/2005, 13h39
  4. Fonctionnement des fichiers.
    Par phoenix440 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 29/05/2005, 15h36
  5. [langage] fonctionnement des Processus
    Par GMI3 dans le forum Langage
    Réponses: 3
    Dernier message: 19/09/2003, 11h12

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