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

Langage Java Discussion :

C'est une quoi une WeakReference ?


Sujet :

Langage Java

  1. #1
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut C'est une quoi une WeakReference ?
    Bonjour,
    je suis en train de faire lire un code source lorsque je vois cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.currentGraph = new WeakReference(sourceGraph);
    La question que je me pose est c'est quoi la classe WeakReference?? A quoi sert-elle? J'ai essayé de lire ce que dit la doc de Sun l--dessus mais j'avoue que je n'ai rien compris.
    Est ce que quelqu'un peut m"éclairer ??????

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    c'est une référence qui, en gros, n'est pas prise en compte dans le calcul du garbage collection. Ca veux dire que dans ton cas, ca n'empeche pas sourceGraph d'être nettoyé par le GC si il n'est plus utilisé ailleurs. On utilise ça quand la référence n'a pas d'importance et peut etre perdue (en gros l'objet peut disparaitre sans prévenir, ca nous dérange pas plus que ca).

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu trouveras plus d'infos sur les différents types de références sur mon blog : Comprendre les Références en Java


    a++

  4. #4
    Invité
    Invité(e)
    Par défaut
    En gros, ça consiste à mettre un objet à la poubelle pour libérer de la place, en espérant que les éboueurs ne passent pas ?

  5. #5
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 748
    Par défaut
    A peu de chose près oui.
    Cependant, tant qu'il restera des référence normales sur l'objet, on est certain que les éboueurs ne le ramasseront pas.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je me suis perdu en route après les soft reference ^^
    ça a l'air très intéressant, mais vraiment spécifique aux langages interprétés par une VM

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par PierreD87 Voir le message
    Je me suis perdu en route après les soft reference ^^
    Les différences sont assez subtiles et il m'arrive moi même de les confondre

    C'est bien de connaitre leurs existence, mais leurs utilisations est plutôt rare et nécessite une bonne compréhension.

    Citation Envoyé par PierreD87 Voir le message
    ça a l'air très intéressant, mais vraiment spécifique aux langages interprétés par une VM
    Plus précisément aux langages dont la mémoire est géré par un GC

    a++

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    C'est bien de connaitre leurs existence, mais leurs utilisations est plutôt rare et nécessite une bonne compréhension.
    Une utilisation courante est recommandée est le maintient d'un liste de listener. Le listener a sa vie propre, et t'as pas envie que l'existence d'objets sur lequel il écoute empeche son garbage collecting, sinon, en interfaces graphique, on arrive vite à des situation de memory leak car les listener ne peuvent pas etre GC -> ils gardent des données qui elles meme sont peut etre des composant graphiques qui eux meme gardent alors leur listener, etc.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développement logiciel
    Inscrit en
    Mai 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développement logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2005
    Messages : 74
    Par défaut
    En gros le but des WeakReference est de pouvoir éviter les références en boucles, qui créent des problèmes de fuite mémoire car les objets ne sont jamais "garbage collectés".

    Ainsi si A contient une référence sur B, et que B doit aussi avoir une référence sur A (par exemple dans le sus-cité du listener), alors on fera en sorte que B aie une WeakReference sur A, plutôt qu'une référence forte. Lorsque A sera supprimé, A et B pourront alors être garbage collecté.

    Si cela n'avait pas été fait, lors de la suppression de A, et du passage du GC, celui-ci aurait vu que B avait encore une référence sur A, et ne l'aurait donc pas collecté. Même cas pour B, et donc problème potentiel de fuite mémoire.

  10. #10
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 748
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 748
    Par défaut
    Un bon système de GC (et java en a un bon) sait heureusement gérer les références en boucle tout seul sans que l'on aie besoin de l'aider avec des weak-references.

    Si ce n'était pas le cas l'interet du GC serait vraiment limité.

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 483
    Par défaut
    exact uther, on utiliser ca quand, dans la boucle, il y a un objet non GCisable mais qu'on veut que le reste de la boucle le soit.

  12. #12
    Membre éclairé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Août 2007
    Messages : 509
    Par défaut
    Merci pour vos réponses !!!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/02/2021, 17h57
  2. [XL-2010] Copie d'un tableau d'une feuille à une autre : une cellule ne se recopie pas
    Par mchouv dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/07/2014, 13h47
  3. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 14h22
  4. Réponses: 3
    Dernier message: 23/08/2009, 20h49
  5. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 16h53

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