= null au lieu de dispose

Le
J-L
Bonjour

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une
assignation du type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?

J-L !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Delf
Le #12145741
J-L a couché sur son écran :

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une assignation du
type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?



Non, c'est le GC qui s'en chargera.

--
Delf
Gilles Kohl [MVP]
Le #12145721
On Tue, 10 Jun 2008 16:02:35 +0200, J-L wrote:

Bonjour

Pour un objet qui n'implémente pas IDisposable, est-ce qu'une
assignation du type

MonObjet = null;

suffit à détruire l'objet et à libérer la mémoire?



En principe, oui. Deux remarques:

1) pour que la mémoire soit libérée, aucune référence à l'objet doit
subsister. Contre-example:

ClasseQuelconque monObjet;
ClasseQuelconque monObjet2;

monObjet = new ClasseQuelconque();

monObjet2 = monObjet; // copie de la référence

monObjet = null; // pas suffisant, il faudra aussi ...

monObjet2 = null; // pour faire libérer la mémoire.

2) la mémoire ne sera pas libérée tout de suite, mais quand jugera bon
le collecteur automatique (GC).

Amicalement,
Gilles.

Regards,
Gilles [MVP].

(Please reply to the group, not via email.
Find my MVP profile with past articles / downloads here:
http://www.gilleskohl.de/mvpprofile.htm)
J-L
Le #12145711
>
Non, c'est le GC qui s'en chargera.



ok, mais seul le GC aura connaissance de cet objet ? Je veux dire qu'il
n'y aura plus aucune référence sur cet objet dans mon code ?
Delf
Le #12145691
J-L a écrit :

ok, mais seul le GC aura connaissance de cet objet ? Je veux dire qu'il n'y
aura plus aucune référence sur cet objet dans mon code ?



Si tu n'as plus de référence dessus le GC droppera (ou pas) l'objet
lors de sa prochaine action.

--
Delf
Publicité
Poster une réponse
Anonyme