Alex- Agreed. Just sort of assumed that the 5 lines of code included weren't the only places where event listeners were bring added, but, perhaps they are.
Nate- If you want to send me any code offline, labriola at digitalprimates.net I will be glad to take a look at it for you and see if I can see an appropriate event (or appropriate place to add one) for your question about moving on and off the page. But, without seeing some of the code, I am not sure I have a better answer. Mike http://blogs.digitalprimates.net/codeSlinger/ --- In [email protected], "Alex Harui" <[EMAIL PROTECTED]> wrote: > > Mike, you're correct that removeChild doesn't remove listeners, but in > Nate's code below, if you removeChlid(endDate), you don't "have to" > remove the mouse click listener as endDate has a reference to barClick > and not the other way around. > > > > Nate, if you didn't make a typo, hasEventListener ("MouseEvent.CLICK") > should be hasEventListener(MouseEvent.CLICK); > > > > Anyway, something is holding on to something. I guess I'd suggest > commenting out things, making the dataprovider smaller and other stuff > to see what might make a difference. If you can break it down to > something small enough to be posted then we can all take a look. > > > > For example, you might get new dataproviders but not assign them to the > view classes and see if that leaks. Or take out the fish eye, or take > out the book UI. > > > > -Alex > > > > ________________________________ > > From: [email protected] > [mailto:[EMAIL PROTECTED] On Behalf Of Michael Labriola > Sent: Sunday, April 08, 2007 7:51 PM > To: [email protected] > Subject: [flexcomponents] Re: changing dataprovider on custom component > > > > > Nate, > > I am glad things seem to be working somewhat better and I can see > the smoke effect taking major cpu time. > > For future reference, removing a child does not remove the event > listeners on that child. I might, for example, want to remove a > child from one container and add it to another, so, the child is > preserved until all references to it are removed. > > Skim this link when you have time, start about half way down on > destroying unused objects. > > http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/ww > <http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/w w> > help.htm?context=LiveDocs_Book_Parts&file=performance_118_27.html > > This might not have anything to do with your issue at this point, > but, it is still very usefull information. > > Take care, > Mike > http://blogs.digitalprimates.net/codeSlinger/ > <http://blogs.digitalprimates.net/codeSlinger/> > > --- In [email protected] > <mailto:flexcomponents%40yahoogroups.com> , "Nate Pearson" > <napearson99@> wrote: > > > > I am not removing any event listeners. Here's how I am adding > them. > > > > endDate.addEventListener(MouseEvent.CLICK, barClick) > > > > > > private function barClick(event:MouseEvent):void{ > > var Event:TextEvent = new TextEvent("barClick"); > > var myDate:Date = new Date(); > > Event.text = myDate.getMilliseconds().toString(); > > dispatchEvent(Event); > > } > > > > I figured that when you remove a child that it would remove any > event > > listeners that were on that child. I wrote this in a loop through > the > > children: > > > > if (this.getChildAt(0).hasEventListener("MouseEvent.CLICK")){ > > this.getChildAt(0).removeEventListener("MouseEvent.CLICK", > barClick ); > > } > > > > When I debugged that if statement was never true. I also commented > > out all of my addEventListener code and the app still eats up > memory. :( > > > > Alex, I read your garbage collection and memory leak posts. I > > automated changing my data providers and turning flex book pages. > I > > got to 608 megs before there was heaving pagging and i stopped > it. It > > seems when I change dataproviders my app likes to take up a chunk > of > > 10 megs of memory at a time. > > > > When I automate Ely's Anatomy flex book on its own it takes up > around > > 100k a second and doesn't seem to top out. I wonder if this could > > have to do with his component? I doubt it though, hes like a super > > genius and I'm new to AS3; so it's probably me. > > > > I'm willing to try anything and everything to get this fixed! > > > > Thanks for your response. > > > > Nate > > > > > > > > --- In [email protected] > <mailto:flexcomponents%40yahoogroups.com> , "Michael Labriola" > > <labriola@> wrote: > > > > > > > > > Nate, > > > > > > Out of curiosity, you mention event listeners specifically. When > you > > > are removing children and changing dataProviders, are you also > > > removing event listeners or do you just continue to add them. > > > > > > Dependent upon how you are adding the event listeners, you could > be > > > preventing flash from garbage collection the previous > dataproviders > > > and/or the objects you are creating. > > > > > > Just my first reaction, > > > Mike > > > http://blogs.digitalprimates.net/codeSlinger/ > <http://blogs.digitalprimates.net/codeSlinger/> > > > > > > > > > --- In [email protected] > <mailto:flexcomponents%40yahoogroups.com> , "Nate Pearson" > > > <napearson99@> wrote: > > > > > > > > "Are you changing the entire dp or values inside it?" > > > > I have 4 dps each which hit its own instance of the > component. I > > > am > > > > getting new data from a webservice and assigning it to the dps > > > like so: > > > > p3.dataProvider = _Book[0].bar > > > > p4.dataProvider = _Book[0].bar > > > > p2.dataProvider = _Book[1].bar > > > > p1.dataProvider = _Book[1].bar > > > > > > > > *Book is an array collection that receives information from my > ws > > > > > > > > > > > > "What kinds of custom component is it?" > > > > My custom component extends UIComponent. I dynamically draw a > few > > > > sprites, labels and text inside of it depending on the data. > Each > > > of > > > > those have an event handler on them. > > > > > > > > Those components sit inside Ely's flex component as > transparent > > > pages. > > > > The idea is to dynamically build layers based on what the > user > > > wants > > > > to see. I have Doug Mccune's version of Ely's fish eye > component > > > as > > > > the navigation on the bottom. After I change the dpa few > times > > > and my > > > > component gets updated i can really tell that the fish eye > > > component > > > > slows down. > > > > > > > > > > > > "Is memory usage going up?" > > > > Memory usage does go up. In firefox after changing the dp > about 20 > > > > times i pumped it up from 70megs to 220megs. The browser also > > > takes > > > > up exactly 22% or 25% of the cpu in IE and Firefox > respectively. > > > I'm > > > > on a dual core with hyper threading and I think its maxing out > one > > > of > > > > the fake cores. The weird thing is that it stays at that 22% > or > > > 25%. > > > > I have debugged for updatedisplaylist infinite loops but i > didn't > > > > find one. > > > > > > > > > > > > "What gets slower? Scrolling? Something else?" > > > > Everything does. I have some animations that go very slow. > The > > > fish > > > > eye component goes very slow. Turning the page in the flex > book is > > > > also slow. It seems like the frame rate gets very low. > Reminds > > > me of > > > > in a video game when there is too much action going on and my > > > computer > > > > slows down. > > > > > > > > Sorry for the really long reply, but this component is so > > > important to > > > > me! I'm in on a Saturday trying to get it fixed :(. > > > > > > > > Thank you Alex! > > > > > > > > -Nate > > > > > > > > p.s. I am also clearing this children along with graphics.clear > () > > > in > > > > updatedisplaylist. > > > > > > > > var j:int = this.numChildren > > > > for (i=0; i<j; i++){ > > > > this.removeChildAt(0) > > > > } > > > > > > > > > > > > --- In [email protected] > <mailto:flexcomponents%40yahoogroups.com> , "Alex Harui" <aharui@> > > > wrote: > > > > > > > > > > Are you changing the entire dp or values inside it? > What > > > kinds of > > > > > custom component is it? > > > > > > > > > > > > > > > > > > > > ________________________________ > > > > > > > > > > From: [email protected] > <mailto:flexcomponents%40yahoogroups.com> > > > > > [mailto:[email protected] > <mailto:flexcomponents%40yahoogroups.com> ] On Behalf Of Nate > Pearson > > > > > Sent: Friday, April 06, 2007 5:28 PM > > > > > To: [email protected] > <mailto:flexcomponents%40yahoogroups.com> > > > > > Subject: [flexcomponents] changing dataprovider on custom > > > component > > > > > > > > > > > > > > > > > > > > I have a custom component that works pretty well. When I > change > > > the > > > > > dataProvider while the application is running it gets slower > and > > > > > slower. The more I change it the worse it gets. > > > > > > > > > > In my updateDisplayList I call graphics.clear(); . Do i need > to > > > > > override the dataprovider function and call graphics.clear > (); > > > there? > > > > > If so could someone show me how? > > > > > > > > > > I also call invalidateDisplayList on my component(s) from my > main > > > > > application. Im guessing this is bad practice and it should > be > > > called > > > > > some where inside (perhaps when I set the dataprovider?) > > > > > > > > > > If not, what do you think is wrong? > > > > > > > > > > > > > > >
