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?
> > > > >
> > > >
> > >
> >
>


Reply via email to