[Newbies] Re: Proper object removal

Bert Freudenberg bert at freudenbergs.de
Wed Jun 4 10:12:59 UTC 2008


On 04.06.2008, at 10:32, Klaus D. Witzel wrote:

> On Wed, 04 Jun 2008 09:55:11 +0200, Norbert Hartl wrote:
>
>> The objects are still referenced in the collection you get
>> from self selected. The line with "each := nil" is useless
>> as each is only a temporary variable.
>
> Not 100% useless, since temporary variables (and arguments, for that  
> matter) survive any attempt, from within the same method, to garbage  
> collect them:
>
> {'this ', 'and ', 'that'} collect: [:each | ].
> Smalltalk garbageCollect.
> {thisContext tempAt: 1} inspect
>
> first line: create some object and make a temp var point to it.
> second line: invoke GC.
> third line: see what's still pointed to by the temp var.


Yikes. Klaus, please keep the hair-splitting to squeak-dev if possible.

Assigning to a block parameter is just wrong. Setting temps to nil is  
unnecessary in any normal method. If your code actually needs to worry  
about this, then you left the beginner playground.

Rob: Here's a recipe to find out what is keeping your instances from  
being garbage-collected:

http://wiki.squeak.org/squeak/2631

- Bert -




More information about the Beginners mailing list