[Newbies] Proper object removal

Rob Rothwell r.j.rothwell at gmail.com
Wed Jun 4 11:57:01 UTC 2008

On Wed, Jun 4, 2008 at 12:45 AM, Herbert König <herbertkoenig at gmx.net>

> if you inspect this you get an inspector on an Array. To the left
> select any entry with a left click (on Windows) and select "objects
> pointing to this value". You get another inspector with an array of
> the objects pointing to the object you can't delete.
> Again inspecting one of these objects you can see how it points to
> your original object. This might give you a clue. And manually
> deleting these references (setting them to nil in the inspector) will
> eventually free your original object for garbage collection.

This is helpful...and leads me to explain a little more because I was making
an assumption that might not be correct...

I am writing a little arbitrary data collection application using Squeak and
Aida.  I can build forms with tabbed pages and add various fields, move them
up and down, give them different labels, that whole thing.  In short, I can
create lots of objects within objects within objects.

My main classes are:

DataManager -- Manages a list of "DataAbstractors"
DataAbstractor -- Manages the "DynamicRecordPage(s)" (basically groups of
DynamicRecordPage -- Manages "FieldDefinition(s)"
DynamicRecord -- Holds the data and handles arbitrary messages based on a

I have been assuming that if I get rid of a DataAbstractor, all it's
underlying objects would just "go away" as well (Pages and Records).

Do you have to explicitly remove the child objects BEFORE removing a parent
object to ensure that it is removed properly?

If some of the objects you find are WeakArray or such you are in the
> (to me) murky area of finalization and weak references. Squeak dev
> would be the place to ask.

Fortunately, these are all recognizable objects that I would expect!

You don't state the size of your problem. Is it three or is it
> thousands of instances hanging around?.

Well, it is a few right now, but just grows continually as I use it!
Nothing ever goes away, so I figure it will BE thousands if I don't figure
this out.  Every now and then I just save my project, blow it away, garbage
collect, and reload everything.  So far, that's the only way I can seem to
get rid of anything!

I once tried the pointer finder tool but wasn't satisfied with it.
> And the swiki has a page on "cleaning up junk".
> RR> I still see the object I removed, even with an explicit
> RR> Smalltalk garbageCollect or garbageCollectMost.
> RR>  Anything I create seems to hang around forever.
> Sometimes saving and reloading an image does a more thorough job than
> garbageCollect. Maybe because of the above mentioned weak references.

Thanks for your help...

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/beginners/attachments/20080604/cf8fd7c3/attachment.htm

More information about the Beginners mailing list