[flexcoders] runtime-shared-library-path tag is overriding the default framework RSLs
I'm trying to add some custom RSLs to my ant build scripts but it seems that, unlike library-path and external-library-path, the runtime-shared-library-path ANT task does not accept an append attribute and it ends up overriding all the framework RSLs defined in flex-config.xml. How do you specify a custom RSL in an ANT script without overriding the default shared libraries?
[flexcoders] Re: memory leaks and activation-objects
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
[flexcoders] Re: memory leaks and activation-objects
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, Alex Harui aha...@... wrote: Could you be registering anonymous functions as event listeners and other callbacks? On 8/30/10 12:52 PM, lew.miller lew.mil...@... 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 , 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
[flexcoders] memory leaks and activation-objects
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
[flexcoders] Re: memory leaks and activation-objects
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, Alex Harui aha...@... 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.mil...@... 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