Looks like I need to focus on those functions. Many thanks!
--- In flexcoders@yahoogroups.com, Alex Harui <aha...@...> wrote:
>
> I don't like anonymous functions, nested functions or whatever you want to
> call function instances. Everything on the callstack is referenced by the
> scope-chain/activation object until the function instance can be GC'd. Once
> you call removeEventLIstener, then the scope-chain goes away, but until then,
> lots of things are kept around.
>
> It is generallyl more efficient to make doSomething a member method on the
> class. Or create a helper class that handles the dialog and stores the x,y,z
> values.
>
> When you originally posted I thought you were saying that an activation
> object that should go away wasn't or was blocking other things from going
> away. AFAIK, that isn't true, but activation objects are kept around by
> references to function instances and can lead to unexpected memory usage.
>
> On 8/31/10 7:53 AM, "lew.miller" <lew.mil...@...> wrote:
>
>
>
>
>
>
>
>
> Yes. That's precisely what I'm doing. Only, looking at the code now I
> realize most of the time I'm using nested functions (with names) rather than
> anonymous functions. I'm not sure what the implications are of using one
> over another are but, regardless, I gather you're suggesting this is a
> potential problem?
>
> A typical example of what I'm doing would be something like:
>
> private function showDialog(x,y,z):void
> {
> var dialog:SomeDialog = new SomeDialog();
> dialog.addEventListener("ok", function doSomething(e:DialogEvent):void
> {
> someMethod(x,y,z);
> }
> dialog.show();
> }
>
> I'm using the nested function because I need some way to get the x,y,z values
> into someMethod. Does this code look problematic?
>
> Thanks much for your help!
>
> Lew
>
> --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com> ,
> Alex Harui <aharui@> wrote:
> >
> > Could you be registering anonymous functions as event listeners and other
> > callbacks?
> >
> >
> > On 8/30/10 12:52 PM, "lew.miller" <lew.miller@> wrote:
> >
> >
> >
> >
> >
> >
> > Thanks Alex. I don't have any simple test case indicating that they leak,
> > I'm just struggling to understand what is causing certain leaks in a large
> > application where the profiler points me to activation objects.
> >
> > So when tracking memory leaks with the FB4 profiler you're saying one
> > can/should simply ignore any object reference paths that start with
> > activation objects? (If so, it would be nice if they weren't reported--but
> > that's a separate issue.) Can you tell me what it means when the profiler
> > lists activation objects? Does that imply some corresponding function is
> > executing at the time the memory snapshot was taken? If I understood why
> > I'm getting all these references from activation objects I'd feel a bit
> > more comfortable about ignoring them. :-)
> >
> > My application makes use of anonymous functions in places and I read an old
> > Adobe Developer Connection article that says:
> >
> > "Defining functions on the fly causes an arcane memory leak in Flash Player
> > because the activation object sent to the function can never be recovered
> > by the garbage collector. So the bottom line is to avoid dynamic classes
> > and explicitly define all the properties and functions used in your
> > classes."
> >
> > It doesn't elaborate and was written in 2006 so it may be irrelevant but
> > makes me wonder.
> >
> > --- In flexcoders@yahoogroups.com <mailto:flexcoders%40yahoogroups.com>
> > <mailto:flexcoders%40yahoogroups.com> , Alex Harui <aharui@> wrote:
> > >
> > > AFAIK, they do not cause leaks. If you show some data or a simple test
> > > case that indicates that they are, I will try to take a look.
> > >
> > >
> > > On 8/30/10 8:36 AM, "lew.miller" <lew.miller@> wrote:
> > >
> > >
> > >
> > >
> > >
> > >
> > > I've been wrestling with memory leaks and the FB4 profiler and lately
> > > have been trying to understand activation-objects and their relationship
> > > to GC because the vast majority (often all) of the references the
> > > profiler tells me an object has keeping it in memory come from activation
> > > objects.
> > >
> > > While researching this I came across a note from Alex Harui saying "I've
> > > never seen an activation object cause a leak" but other things I've read
> > > seem to suggest they can. (Certainly the profiler would lead me to
> > > believe it.) Can anybody enlighten me? Or just point me to the place to
> > > read documentation on the subject that is up-to-date? Half of what I've
> > > read about activation objects appears to be from earlier versions of
> > > ActionScript so I'm not sure what to believe.
> > >
> > > If an activation object can cause a memory leak, I'd like to understand
> > > how. I may not have a firm grasp of the lifecycle of an activation
> > > object but I thought it would no longer be accessible from the GC root
> > > after the function it's created for finishes executing.
> > >
> > > Any help or pointers would be greatly appreciated.
> > >
> > > Lew
> > >
> > >
> > >
> > >
> > >
> > >
> > > --
> > > Alex Harui
> > > Flex SDK Team
> > > Adobe System, Inc.
> > > http://blogs.adobe.com/aharui
> > >
> >
> >
> >
> >
> >
> >
> > --
> > Alex Harui
> > Flex SDK Team
> > Adobe System, Inc.
> > http://blogs.adobe.com/aharui
> >
>
>
>
>
>
>
> --
> Alex Harui
> Flex SDK Team
> Adobe System, Inc.
> http://blogs.adobe.com/aharui
>