Thanks for the great advice so far...so what is the best way of 
freeing Images for gc()? I have a DataGrid that has an itemRenderer 
with a <mx:Image/>...if I have a dataProvider ArrayCollection (where 
each records has a URL that the Image uses)...does simply setting the 
dataProvider to null take care of marking the image for GC? And 
anything I have a Bitmap for? Simply setting to null.

Thanks again. 

--- In [email protected], Alex Harui <[EMAIL PROTECTED]> wrote:
>
> If your app creates lots of stuff, you'll create a high-water mark 
and GC won't run until you get back up near that high-water mark.  
Images are known to easy ways to set that high-water mark pretty high.
> 
> In general, the answer is to re-use instead of re-create, and only 
create what you need when you need it.
> 
> -Alex
> 
> From: [email protected] [mailto:[EMAIL PROTECTED] 
On Behalf Of Blake Barrett
> Sent: Tuesday, October 28, 2008 3:09 PM
> To: [email protected]
> Subject: RE: [flexcoders] Memory issues ... garbage collection only 
running in IE (not FF or Safari)
> 
> e_baggg,
>     You're not the only one. We're experiencing very similar 
problems. Our app just keeps gobbling memory until the browser 
crashes. We've had to resort to calling dispose() explicitly on every 
<mx:Image> and bitmap we ever instantiate, and explicitly calling 
removeAllChildren() on every contaniner before navigating away from 
anything. Helps a little. I'm going to look in to the link you 
mentioned. Maybe that will help us a little more than it has for you 
(fingers crossed).
> 
> Let us all know if you find anything else out.
> 
> Blake
> 
> ________________________________
> From: [email protected] [mailto:[EMAIL PROTECTED] 
On Behalf Of e_baggg
> Sent: Tuesday, October 28, 2008 2:51 PM
> To: [email protected]
> Subject: [flexcoders] Memory issues ... garbage collection only 
running in IE (not FF or Safari)
> 
> 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