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

C# Discussion :

Garbage Collector et délégués


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut Garbage Collector et délégués
    Bonjour,

    J'ai une question assez étrange à priori.
    Dans un programme, j'ai besoin d'instancier un objet et de récupérer un délégué sur une de ses méthodes.

    Des que j'ai fait ça, je ne référence plus l'objet (en gros je me débarrasse de la référence que j'avais sur lui), et je ne garde que le délégué.

    Ma première question est de savoir si l'instance de l'objet risque d'être libérée, du fait qu'il n'est plus référencé "directement", mais juste par un délégué.

    Si ce n'est pas le cas, donc si le GC est assez intelligent pour voir que le délégué est encore utilisé, l'objet sera-t-il libéré une fois qu'on se sera aussi débarrassé du délégué ? Donc qu'il ne sera plus du tout utilisable.

    Merci d'avance

  2. #2
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Cette question n'est ni bizarre ni stupide, au contraire.

    Quand tu écris par exemple :
    b.MachinChanged += a.Methode, l'event MachinChanged de b contient une référence vers la fonction "Methode". Donc en gros, b référence a : si aucune désinscription n'est faite, le GC ne détruira pas a avant b.

    C'est pourquoi dans certains scénarios il vaut mieux explicitement désabonner une méthode d'un event, selon la durée de vie relative des deux objets. J'ai lu à plusieurs endroits que c'était un gros reproche fait à C# et à sa gestion des événements.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut
    Merci beaucoup pour ta réponse !

    Donc au final, si j'ai bien tout comprendu () quand le délégué n'est plus référencé, l'instance de la classe des méthodes est bien récupérée par le GC.

    J'ai bon ?

  4. #4
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par ArianeV Voir le message
    Merci beaucoup pour ta réponse !

    Donc au final, si j'ai bien tout comprendu () quand le délégué n'est plus référencé, l'instance de la classe des méthodes est bien récupérée par le GC.

    J'ai bon ?
    Oui. Plus précisément, si un objet n'est plus référencé nulle part (soit directement, soit via ses méthodes comme c'est le cas ici), il est candidat à la destruction lors du prochain passage du GC.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Par défaut
    Ok merci beaucoup !

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

Discussions similaires

  1. [JVM] Java 5 et Garbage Collector(Parralèle)
    Par ssaunois dans le forum Général Java
    Réponses: 6
    Dernier message: 28/11/2005, 23h42
  2. [JVM]Garbage collector
    Par godik dans le forum Général Java
    Réponses: 5
    Dernier message: 07/10/2005, 09h12
  3. JPanel et Garbage Collector
    Par tck-lt dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 25/07/2005, 18h03
  4. [JVM] les objets et le Garbage collector
    Par Kurdran dans le forum Général Java
    Réponses: 7
    Dernier message: 02/06/2005, 16h57
  5. [Language]Garbage collector
    Par GETah dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2005, 15h18

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