3.4 event system holding objects?
rwithers12 at attbi.com
Sat Feb 8 15:42:38 UTC 2003
What changeset version have you loaded from the update stream? There
was a patch released in the update stream which fixes an issue in
the 3.4 event system uses WeakMessageSends and WeakActionSequences to
hold both receivers and arguments. This will not be the source of your
morph preservation. :)
The source of unreleased garbage, that I run into consistently, is
reified DoIt contexts that are holding a morph as the receiver. If you
clear out the receiver, then that will allow them to be GCed. I have
the most success walking the 'objects pointing to this value' from an
inspector, but this is the most tedious way to go about it.
this should give you the count of the number of Morphs involved in
Morph allSubInstances select: [:e | (e valueOfProperty: #actionMap)
If I am looking at the code correctly, Worlds' actionMap properties
should be holding weak references to just WonderlandCameraMorphs.
On Saturday, February 8, 2003, at 05:26 AM, Bob Arning wrote:
> If events are responsible for keeping garbage around, then there are
> likely two reasons:
> 1. That events are implemented with strong references that need to be
> explicitly released, but are not.
> 2. The events are written in such a way as to carry extra baggage that
> might otherwise have been collected.
> To see which of these might be behind the bloat you are seeing, it
> might help if you posted the result of one of your PointerFinder
> On Sat, 8 Feb 2003 02:33:45 -0500 "Bill Schwab" <schwabw at sprynet.com>
>> I did a little more digging into that bloated image I mentioned a few
>> days ago. First, I verified that I didn't have a large number of
>> lingering Process-es holding things in the image. Then I did some
>> checking with the PointerFinder and it kept leading to events
>> associated with Wonderland actors (the objects that are most
>> notably lingering in the image).
>> Some browsing in 3.4 (the problematic image) and my slightly
>> older 3.2 image reveals that my 3.4 image includes
>> Object>>when:evalaute, and that #when:send:to: and friends are
>> written in terms of it instead of #when:perform: as in 3.2. I find
>> suspicious because #when:evaluate: was removed from Dolphin
>> quite some time ago, specificially because it was causing
>> problems with large networks of objects that were immune to the
More information about the Squeak-dev