i still think that you could re-use window instances. After all, how
many windows a regular human being is capable to deal with at one time
- 7, 12,25? You just create a pool of instances and there will be
*zero* startup time for the window and *zero* memory increase.
Otherwise, you would need to create unlimited number of instances. 

When I was a little boy and programmed in Borland Delphi, I came up
with the same idea for my applications - and i think this approach is
still valid for Flex stuff :)

Flex components by design are not light. for example, they could be
references in static variables (i guess), which could prevent some
objects from garbage collecting. There are "item renderers", they are
designed to be numerous, but even they, they are cached by components
like datagrid, list, etc.


--- In [email protected], "e_baggg" <[EMAIL PROTECTED]> wrote:
>
> My original mxml was a bad example I guess. In my application, which 
> is a Flex app that has its own windowing (exactly like Windows)...when 
> I add and create Windows and close them, the browser CPU memory always 
> increments (except for IE when I minimize the browswer window and 
> memory is restored). When using System.totalMemory, I see some memory 
> gets cleaned up but not all of it and if I open and close the same 
> window multiple times, it is inconsistent to how much memory is given 
> back to the Player, but either way it continually increments. I use 
> weakReferences everywhere and call removeAllChildren() on the toplevel 
> containers and set the viewComponent to null when removing the 
> Mediator from the Facade (PureMvc). But yeah, when using Profiler, 
> which forces a gc(), all memory is correctly restored back the player. 
> Just not in runtime. The hunt continues...
> 
> --- In [email protected], "andrii_olefirenko" <andriyo@> 
> wrote:
> >
> > i've tried your example and didn't notice any memory leakage. 
> > anyway, why do you need to create components and remove them, and
> > create again the same components? It looks like you made up an
> > artificial problem for yourself :)
> > 
> > 
> > --- In [email protected], "e_baggg" <e_baggg@> wrote:
> > >
> > > So I have an app in production which after 10 minutes of usage 
> began 
> > > to perform EXTREMELY slow, and users had to restart the app. (Flex 
> 3) 
> > > Windows and Mac...all browsers. I  did some Profiling and did not 
> get 
> > > far. Whenever I take a Memory Snapshot, gc() is forced and all my 
> > > objects are correctly removed from memory. So why are they not 
> gc()'d 
> > > in normal runtime?? I know gc() only runs when new memory is 
> requested 
> > > and nothing is being drawn/rendered. Both seem to be OK on my 
> side.
> > > 
> > > I have read extensively all the blogs and Adobe docs regarding 
> this  
> > > issue, including the event listener for ENTER_FRAME which calls 
> > > System.gc() twice. (http://www.craftymind.com/2008/04/09/kick-
> > > starting-the-garbage-collector-in-actionscript-3-with-air/). This 
> > > unfortunately did not work for me. 
> > > 
> > > To simplify, I created a simple app that adds and removes RichText 
> > > fields. if I create 50 of them, then remove them all, then Add one 
> > > back, that *should* force a gc() but it does not. The FF memory 
> always 
> > > stays high. I noticed in IE, minimizing the browser window causes 
> a 
> > > gc() and my memory drops to a much lower #.
> > > 
> > > 
> > > Has anyone seen or come across this? B/c of this issue, we're 
> pretty 
> > > much going to lose our customers and try to wing a html/ajax app 
> > > ASAP..so I'm scrambling to resolve this. 
> > > 
> > > Thanks in advance for any help.  
> > > 
> > > <?xml version="1.0" encoding="utf-8"?>
> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"; 
> > >   creationComplete="init()" layout="vertical" >
> > > <mx:Script>
> > >   <![CDATA[
> > >           import mx.controls.RichTextEditor;
> > >           
> > >           private function removeit():void
> > >           {
> > >                   this.removeChildAt(2);
> > >           }
> > >           
> > >           private function doit():void
> > >           {
> > >                   var rte : RichTextEditor = new 
> > > RichTextEditor();
> > >                   rte.width=300;
> > >                   rte.height=150;
> > >                   this.addChild(rte);
> > >           }
> > >   ]]>
> > > </mx:Script>
> > >   <mx:Button click="doit()" label="Add"/>
> > >   <mx:Button click="removeit()" label="Remove"/>
> > > </mx:Application>
> > >
> >
>


Reply via email to