If you look around, you'll find this is a well known.... feature? >From what I've seen, the FP team is pointing fingers at the browsers, and the >browsers are pointing fingers at the FP team. So who knows what the deal is.
--- In [email protected], "ag_rcuren" <robert.vancuren...@...> wrote: > > I was recently just messing around with ModuleLoader and noticed some funny > things when using a stand alone player vs a browser. > > Here is the code I am using > > Main.mxml > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" > addedToStage="init();"> > > <mx:Script> > <![CDATA[ > import mx.events.ModuleEvent; > import mx.modules.ModuleLoader; > > private var moduleLoader:ModuleLoader; > > private var loadTimer:Timer = new Timer(2000, 1); > private var unloadTimer:Timer = new Timer(2000, 1); > > private function init():void > { > > loadTimer.addEventListener(TimerEvent.TIMER_COMPLETE, ltc); > > unloadTimer.addEventListener(TimerEvent.TIMER_COMPLETE, ultc); > > loadTimer.start(); > } > > private function ltc(event:TimerEvent):void > { > loadModule(); > } > > private function ultc(event:TimerEvent):void > { > unloadModule(); > } > > private function loadModule():void > { > if (!moduleLoader) > { > trace("creating new module"); > moduleLoader = new ModuleLoader(); > addChild(moduleLoader); > > moduleLoader.addEventListener(ModuleEvent.READY, moduleReadyHandler); > } > > moduleLoader.url = "Module1.swf"; > moduleLoader.loadModule(); > } > > private function > moduleReadyHandler(event:ModuleEvent):void > { > trace("module loaded"); > > moduleLoader.removeEventListener(ModuleEvent.READY, moduleReadyHandler); > > unloadTimer.reset(); > unloadTimer.start(); > } > > private function unloadModule():void > { > > moduleLoader.addEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler); > moduleLoader.unloadModule(); > } > > private function > moduleUnloadHandler(event:ModuleEvent):void > { > trace("module unloaded"); > > moduleLoader.removeEventListener(ModuleEvent.UNLOAD, moduleUnloadHandler); > removeChild(moduleLoader); > moduleLoader = null; > > loadTimer.reset(); > loadTimer.start(); > } > > ]]> > </mx:Script> > </mx:Application> > > > Module1.mxml > <?xml version="1.0" encoding="utf-8"?> > <mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" > width="100%" height="100%"> > <mx:PieChart /> > > </mx:Module> > > Basically this application continuously loads and then unloads the same > module over and over. When running this app with the Flex Builder profiler I > was pretty much what I expected, the memory usage when up util flash player > decided it need to allocate more memory at which time it runs the garbage > collection and freed up most of the memory in use. After letting the app run > for a while I determined that garbage collector was working as I expected and > the memory was staying within an expected range. > > When I opened task manager I noticed a completely different thing, the > browser was using more and more memory and never releasing any of it. I tried > this app in ie, ff, and chrome and found the same to be true for all > browsers. So being curious as I am I thought well lets try thi s in a stand > alone flash player and what do you know it worked just as expected and the > memory usage never got out of control. > > Now I know that the code above is unrealistic but I was wondering if anyone > could shed light on why the browsers do not release the memory even after the > flash player has. Or is there something terribly wrong with this test code > and is they why I am seeing this. Any insight would be great. >

