Thank you for your reply Angus...

Yet for me, there's only one swf loader in the main.swf,

which acts pretty much like a container and loads various swfs

every 30 seconds or so...

So I don't have to loop through a container to check with all 

swfloaders (since there's only one..)

and I do remove event listeners in all applications....

(at least at an application level, which means some UIComponents 

in some of the loaded applications still have in-line event  
listeners, that are not removed, yet they're neglectable!)

But this memory problems just hangs over me and it never disappears..



 

--- In [email protected], "Angus Johnson" <[EMAIL PROTECTED]> 
wrote:
>
> You're possibly missing a statement setting the variable holding 
the
> swfloaders to null.
> 
> It's easy to miss a listener particularly if you are re-parenting 
swfloaders
> around the displaylist.
> 
> Here's how I've done it... no memory problems. Remember garbage 
collection
> is not immediate. If you unload something it wont be picked up for 
1-2 mins.
> 
> 
> currentViewContent is a canvas object with a 1:* swfloaders which 
represent
> mini apps.
> 
>             // loop over children, looking for swfLoaders
>             var currentViewChildren:Array = 
currentViewContent.getChildren
> ();
> 
>             for(var i:Number = 0; i < currentViewChildren.length; 
i++)
>             {
>                 if (currentViewChildren[i] is SWFLoader) {
>                     trace('IQViewManager '+this+' : Close and 
remove
> child'+currentViewChildren[i].id);
>                     // call the hook methods to close down the 
application
> 
>                     var loadedSM:SystemManager =
> SystemManager(currentViewChildren[i].content);
> 
>                     // if the BridgeIQ object is available as a 
public
> property of the loaded app then
>                     // we can call the methods
> 
>                     if ('BridgeIQ' in loadedSM.application) {
>                         trace("calling terminate on sub 
application");
>                         loadedSM.application
['BridgeIQ'].doTerminate();
>                     }
> 
> currentViewChildren[i].content.loaderInfo.loader.unload();
> 
>                 }
>             }
> 
>             // null out the array to kill off the reference
>             currentViewChildren= null;
> 
>             /* remove children from the view doing this removes the
> SWFLoader's. There are no listeners set elsewhere so these objects 
should
> be garbage collected
>             */
>             if (currentViewContent.numChildren) {
>                 currentViewContent.removeAllChildren();
>                 trace("Removed all children of view");
>             }
> 
> HTH
> Angus
> 
> On 09/01/07, arcencie1978 <[EMAIL PROTECTED]> wrote:
> >
> >   Hello folks...
> >
> > I have some serious problem with loading multiple swfs in a
> > swfLoader whithin an application...
> >
> > The problem is that... every time I load another swf in a 
swfloader,
> >
> > the memory that the Internet Explorer uses justs keeps going up 
and
> > up
> >
> > and one time (maybe after 15 - 20 minutes) it just crashes...
> >
> > To be more specific, my application loads a new swf in a regular
> > basis (every 30 seconds)
> >
> > to make it like a slideshow...
> >
> > and it also has fonts embedded in it
> >
> > yet to minimize the total memory used by this application,
> >
> > I've did somthing like this...
> >
> > var sys:SystemManager = contentLoader.content as SystemManager;
> > if (sys && sys.numChildren>0) {
> > sys.removeChildAt(0);
> > contentLoader.content.loaderInfo.loader.unload();
> > }
> > contentLoader.source= DisplayManager.convertToAppSWFName (
> > subAppID );
> >
> > and every application has an removedEventHandler which listens to
> > removed Event,
> >
> > and removes all listeners registered to it when it is removed 
from
> > this display list..
> >
> > So I'm very curious why the memory usages just keeps rising...
> >
> > If you have any hints, they'd be greatly appreciated...
> >
> > Thanks in advance!!!!
> >
> > Mark this message as the answer.
> >
> >  
> >
>


Reply via email to