Salut,
Je suppose que c'est le ramasse miette qui fait un nétoyage.
Dans un collection je référence des instances de classe, Si je décide d'enlever une de ses instance de la collection et que celle-ci n'est pas référencée ailleurs, je suppose que cela est netoyé du système.
Maintenant si l'instance en question est aussi référencée dans une instance de classe, le 'reference count' est incrémenté. 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.
Hilaire
On 19 sept. 04, at 22:35, Hilaire Fernandes wrote:
Salut,
Je suppose que c'est le ramasse miette qui fait un nétoyage.
Dans un collection je référence des instances de classe, Si je décide d'enlever une de ses instance de la collection et que celle-ci n'est pas référencée ailleurs, je suppose que cela est netoyé du système.
oui
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. 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@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
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@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Je crois qu'il y a dans la full pointerexplorer.
Stef On 20 sept. 04, at 10:14, Romain Robbes wrote:
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@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
Squeak-fr mailing list Squeak-fr@lists.squeakfoundation.org http://lists.squeakfoundation.org/listinfo/squeak-fr
squeak-fr@lists.squeakfoundation.org