[Squeak-fr] Que se passe-t-il lorsque la reference d'un objet est perdue ?

Romain Robbes rrobbes at info.unicaen.fr
Lun 20 Sep 10:14:52 CEST 2004


>
>
>> Maintenant si l'instance en question est aussi référencée dans une
>> instance de classe, le 'reference count' est incrémenté.
>
> Il y a different system de GC, le reference counting est le plus vieux.
> Je ne me rappele plus celui utilisé par Squeak (tu peux trouver de la 
> doc dans le nouveau blue book cf ma page)
> En fait le probleme avec le reference counting seul est que tu peux 
> avoir une structure pointant sur elle-meme.
> donc a cela ils ajoutent un generation scavenging: l'idee etant que 
> les objets jeunes meurent souvent et que ce qui resistent deviennent 
> "vieux" et donc passent dans un autre zone memoire (ils sont tenured).
>
>> Est-ce qu'il
>> existe une méthode particulière pour connaître le référence count 
>> d'une
>> instance particuliere ? Histoire de vérifier ce qui se passe.
>
> Non normalement non.
Il y a une méthode qui scanne toute l'image (donc très lente, pas 
vraiment utilisable dans du code)
et retourne tous les pointeurs vers un objet :

SystemDictionary>>pointersTo: anObject

par exemple Smalltalk pointersTo: Smalltalk me retourne un Array de 
1806 éléments

>
> Par contre tu peux utiliser des weakcontainer si tu ne veux pas que le 
> fait que ta collection
> est un pointeur sur un objet empeche cet objet d'etre gced.
>
> PS le GC a existe avant Smalltalk en Lisp
>
>
>>
>> Hilaire
>> _______________________________________________
>> Squeak-fr mailing list
>> Squeak-fr at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/listinfo/squeak-fr
>
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-fr
>



Plus d'informations sur la liste de diffusion Squeak-fr