Alex,

Do you know if Class instances get GC'd? (as in instances of Class, not
general objs) I've noticed Player likes to collect SWFs awfully quickly
(even when there's *no* allocation), but I haven't done any experiments to
verify the classes get collected as well (or not) yet though, but it might
be weird if you're expecting a class to be around in order to
getDefinitionForName() it later :)

-Josh

On Sat, Sep 13, 2008 at 7:19 AM, Alex Harui <[EMAIL PROTECTED]> wrote:

>  The Flex Profiler will tell you if you have other stuff that isn't being
> cleaned up.  I posted on my blog some ways to use it.  FP10 fixes many
> issues with SWFs not unloading.  A test using the release build on a
> non-debugger player is the best way to see if you are getting
> false-positives.
>
>
>
> *From:* flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] *On
> Behalf Of *djepyon
> *Sent:* Friday, September 12, 2008 12:11 PM
> *To:* flexcoders@yahoogroups.com
>
> *Subject:* [flexcoders] Re: SWFLoader unloading, whats the trick?
>
>
>
> Ok, I went ahead and added some manual clean up to the swf's I was
> loading using Event.UNLOAD. I'm basically setting values to null so
> they become candidates for garbage collection. Regardless, each time I
> load a file into SWFLoader the mem usage still jumps until the app
> becomes sluggish and ultimately unresponsive. I noticed the following
> bug (http://bugs.adobe.com/jira/browse/SDK-13097) and I'm assuming
> that is the issue I'm having.
>
> As I workaround I'm loading a single swf into SWFLoader and then
> having the loaded swf handle the loading of other external swf files
> itself. The class for something like this is as such:
>
> package {
>
> import flash.display.MovieClip;
>
> import flash.display.Loader;
> import flash.net.URLRequest;
>
> import flash.events.Event;
> import flash.events.ProgressEvent;
>
> public class LoaderSWF extends MovieClip{
>
> private var loader:Loader;
>
> public function LoaderSWF() : void {
>
> loader = new Loader();
>
> addChild(loader);
>
> }
>
> public function loadSWF(path){
>
> trace("loadSWF(", path, " )");
>
> var r:URLRequest = new URLRequest();
> r.url = path;
>
> loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,
> progressHandler);
> loader.load(r);
>
> }
>
> private function progressHandler(event:ProgressEvent) : void {
>
> trace("bytesLoaded=" + event.bytesLoaded + " bytesTotal=" +
> event.bytesTotal);
>
> }
>
> }
>
> }
>
> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Alex
> Harui <[EMAIL PROTECTED]> wrote:
> >
> > Each SWF really should stop its own audio and clean up. Trying to
> clean up on a SWFs behalf is likely a maintenance issue.
> >
> > From: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com> [mailto:
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>]
> On Behalf Of djepyon
> > Sent: Wednesday, September 10, 2008 8:01 AM
> > To: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>
> > Subject: [flexcoders] Re: SWFLoader unloading, whats the trick?
> >
> >
> > Alex thanks for the additional info.
> >
> > swfloader.content.stop() prior to setting a new source in this case
> > managed to stop the next swf at the beginning once it loaded. Not sure
> > why this happened.
> >
> > I did a bit of testing here and as far as I can tell when a
> > MovieClip's loaderInfo dispatches an Event.UNLOAD the MovieClip itself
> > has already been de-referenced.
> >
> > The timeline audio continues to play however. I've managed to fix this
> > problem (although this seems a bit of a hack) by calling
> > SoundMixer.stopAll() in the unload handler. I somehow doubt that this
> > actually deletes the Sound objects that were created so my guess is
> > that this could cause a big leak if many SWF's with timeline audio
> > were being loaded over and over. Perhaps the same problem would
> > persist even with SWF' with manually instantiated audio?
> >
> > Here's my quick fix.
> >
> >
> MovieClip(event.target.content).loaderInfo.addEventListener(Event.UNLOAD,
> > unloadHandler);
> >
> > private function unloadHandler(event:Event) : void {
> >
> > SoundMixer.stopAll();
> >
> > }
> >
> > --- In
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>, Alex
> Harui <aharui@> wrote:
> > >
> > > I haven't used this event to shut down a movie, so I don't have
> > examples, but I think the recommended pattern is that the loaded SWF
> > is supposed to listen for the UNLOAD event on its loaderInfo. If the
> > main app is listening, then you're probably right that it is too late.
> > Of course, if you're about to set the SWFLoader's source you can
> > certainly call swfloader.content.stop() beforehand, but I think stop()
> > doesn't stop Audio/Video, just the frame timeline. You'll have to
> > have access to the loaded SWFs Sound instances which is why it is
> > "better" if the loaded SWF cleans up after itself.
> > >
> > > From:
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>
> [mailto:flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>]
> > On Behalf Of djepyon
> > > Sent: Tuesday, September 09, 2008 8:35 PM
> > > To: flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>
> > > Subject: [flexcoders] Re: SWFLoader unloading, whats the trick?
> > >
> > >
> > > Thanks guys. The feedback I get on here is always great.
> > >
> > > I was able to listen for UNLOAD on the SWFLoader. I tried a
> > > MovieClip(event.target.content).stop() but it seems that its already
> > > disappeared at this point and throws a null object reference error.
> > >
> > > Listening on the content object didn't trigger the event handler.
> > > Would it be better to use REMOVED or REMOVED_FROM_STAGE for this?
> > >
> > > Maybe I could get some sample code?
> > >
> > > --- In
> >
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>,
> Alex
> > Harui <aharui@> wrote:
> > > >
> > > > The SWFLoader unloads the SWF which just de-references the SWF bytes
> > > but does not clear references to objects created by code in that SWF
> > > which might be referenced by the player or other code, including
> > > Timers, Video, Audio, player events, etc.
> > > >
> > > > In FP10, there is a new unloadAndStop method that will supposedly
> > > clear this stuff out, but short of that, the child SWF should listen
> > > for an UNLOAD event and stop Audio and do other cleanup.
> > > >
> > > > From:
> >
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>
> >
> [mailto:flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>]
> > > On Behalf Of Josh McDonald
> > > > Sent: Tuesday, September 09, 2008 4:48 PM
> > > > To:
> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>><mailto:
> flexcoders%40yahoogroups.com <flexcoders%2540yahoogroups.com>>
> > > > Subject: Re: [flexcoders] SWFLoader unloading, whats the trick?
> > > >
> > > > IIRC, any loaded SWF that's no longer referenced will be garbage
> > > collected (and fairly quickly from my experience), but streaming audio
> > > (or video) is still referenced by the player so it doesn't go
> anywhere.
> > > >
> > > > -Josh
> > > > On Wed, Sep 10, 2008 at 9:40 AM, djepyon <ian@<mailto:ian@>>
> > > wrote:
> > > > Does SWFLoader unload itself when you set a new source path?
> Then why
> > > > does timeline audio thats set to "stream" in the swf still
> continue to
> > > > play? Can give me the skinny on properly unloading a SWFLoader? Thx.
> > > >
> > > >
> > > > ------------------------------------
> > > >
> > > > --
> > > > Flexcoders Mailing List
> > > > FAQ:
> http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
> > > > Search Archives:
> > > http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups
> > > Links
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > "Therefore, send not to know For whom the bell tolls. It tolls for
> > > thee."
> > > >
> > > > http://flex.joshmcdonald.info/
> > > >
> > > > :: Josh 'G-Funk' McDonald
> > > > :: 0437 221 380 :: josh@<mailto:josh@>
> > > >
> > >
> >
>
>  
>



-- 
"Therefore, send not to know For whom the bell tolls. It tolls for thee."

http://flex.joshmcdonald.info/

:: Josh 'G-Funk' McDonald
:: 0437 221 380 :: [EMAIL PROTECTED]

Reply via email to