Ok, I get it.  So, if i were to write a method which forced a bunch 
of anonymouse objects to be created, the GC should fire, and i 
should be able to tell if it worked?  Let me give that a try.

--- In flexcoders@yahoogroups.com, "Matt Chotin" <[EMAIL PROTECTED]> wrote:
>
> Using a dictionary isn't completely reliable because the garbage
> collector will only free up what it needs.  If the window isn't 
taking
> too much space the collector may not go ahead and clean it up for a
> while.  The weak reference only says "take it if you need it" but 
it's
> not guaranteed that if the only reference is weak that it will 
disappear
> immediately.  That's why we trigger garbage collection by creating 
a
> bunch of objects, it's to force the GC into thinking it needs the 
space
> for allocation.
> 
>  
> 
> Matt
> 
>  
> 
> ________________________________
> 
> From: flexcoders@yahoogroups.com 
[mailto:[EMAIL PROTECTED] On
> Behalf Of jeff tapper
> Sent: Thursday, July 27, 2006 9:41 AM
> To: flexcoders@yahoogroups.com
> Subject: [flexcoders] Re: Tools for listing objects
> 
>  
> 
> Really, what im looking for, is some way to check if an object no 
> longer exists. I thought a weak reference in the dictionary might 
> work for me, but after 14 hours of inactivity, those weak 
references 
> are still there. 
> 
> Am i misunderstanding the nature of a weak reference? Is there 
some 
> other way that I can test to see if a given object still exists?
> 
> --- In flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com>
> , "Matt Chotin" <mchotin@> wrote:
> >
> > There's no way to know if garbage collection was forced. Create a
> > method does does a for loop that creates 10,000 objects into mid-
> air.
> > 
> > 
> > 
> > For (var i:int=0; I < 10000; i++)
> > 
> > New Object();
> > 
> > 
> > 
> > That should trigger the garbage collector hopefully.
> > 
> > 
> > 
> > ________________________________
> > 
> > From: flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com>
> 
> [mailto:flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com>
> ] On
> > Behalf Of jeff tapper
> > Sent: Thursday, July 27, 2006 5:56 AM
> > To: flexcoders@yahoogroups.com <mailto:flexcoders%
40yahoogroups.com> 
> > Subject: [flexcoders] Re: Tools for listing objects
> > 
> > 
> > 
> > Well, that experiment failed as well. 14 hours later, the same 
> > objects are still listed in the dictionary.
> > Wed Jul 26 17:07:23 GMT-0400 2006
> > Testing56:Testing56
> > Testing19:Testing19
> > Testing38:Testing38
> > Thu Jul 27 08:50:31 GMT-0400 2006
> > Testing56:Testing56
> > Testing19:Testing19
> > Testing38:Testing38
> > 
> > Am I misunderstanding the usage of Weak References in the 
> > Dictionary? Does anyone have any idea how this can be used to 
keep 
> > track of what objects exist and which dont?
> > 
> > --- In flexcoders@yahoogroups.com
> <mailto:flexcoders%40yahoogroups.com>  <mailto:flexcoders%
> 40yahoogroups.com>
> > , "jeff tapper" <jeff@> wrote:
> > >
> > > Ok, heres a sketch of what im trying now. 
> > > App.mxml
> > > ====
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml
> <http://www.adobe.com/2006/mxml> 
> > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> 
> " 
> > > layout="vertical" creationComplete="initApp()">
> > > <mx:Script>
> > > <![CDATA[
> > > import mx.managers.PopUpManager;
> > > import mx.managers.PopUpManagerChildList;
> > > import mx.core.IFlexDisplayObject;
> > > private var screenDict:Dictionary;
> > > private var scr1:IFlexDisplayObject;
> > > private function initApp():void{
> > > screenDict = new Dictionary(true);
> > > }
> > > public function createScreen
> > > (parent:DisplayObjectContainer, 
> > > screen:Class,modal:Boolean=false):IFlexDisplayObject{
> > > var s:IFlexDisplayObject = 
> > > PopUpManager.createPopUp(parent, screen, 
> > > modal,PopUpManagerChildList.APPLICATION);
> > > screenDict[s] = s.name
> > > return s;
> > > }
> > > public function showObjects():void{
> > > trace(new Date());
> > > for (var i:* in screenDict){
> > > trace(i+":"+screenDict[i]);
> > > }
> > > }
> > > public function removeScreen
> > > (screen:IFlexDisplayObject):void{
> > > PopUpManager.removePopUp(screen);
> > > }
> > > private function makeScreen():void{
> > > if(scr1 == null){ 
> > > scr1 = createScreen
> > > (this,Testing,false);
> > > }
> > > }
> > > private function destroyScreen():void{
> > > removeScreen(scr1);
> > > scr1 = null;
> > > }
> > > 
> > > ]]>
> > > </mx:Script>
> > > <mx:Button click="makeScreen()" label="make"/>
> > > <mx:Button click="destroyScreen()" label="kill"/>
> > > <mx:Button click="showObjects()" label="show"/>
> > > </mx:Application>
> > > 
> > > Testing.mxml
> > > =====
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml
> <http://www.adobe.com/2006/mxml> 
> > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> 
> "
> width="400" 
> > > height="300">
> > > <mx:Button click="this.dispatchEvent(new Event('foo'))"/>
> > > </mx:Panel>
> > > 
> > > Now, as i run this, if i click make, kill, make, kill, show, 
The 
> > > trace shows:
> > > Wed Jul 26 17:07:14 GMT-0400 2006
> > > Testing58:Testing58
> > > Testing20:Testing20
> > > Testing39:Testing39
> > > 
> > > Implying that the screens arent really being destroyed. 
Perhaps 
> I 
> > > didnt wait long enough, so 5 minutes later, I tried the same 
> > thing, 
> > > with the same results. Maybe 5 minutes isnt long enough, so 
I'll 
> > > leave it running over night and try again in the morning. But, 
> > the 
> > > fundemental question is, have i done enough to remove the 
> > screens? 
> > > Should the garbage collector clean the unused ones up, or have 
i 
> > > somehow left a reference lingering?
> > > 
> > > We have a very complex app, which I want to ensure we clean up 
> all 
> > > unused objects, but im having trouble finding a way to verify 
> they 
> > > are removed.
> > >
> >
>







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/flexcoders/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to