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], "Michael Labriola"
<[EMAIL PROTECTED]> 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/
>
>
> --- In [email protected], "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], "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:[EMAIL PROTECTED] On Behalf Of Nate Pearson
> > > Sent: Friday, April 06, 2007 5:28 PM
> > > To: [email protected]
> > > 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?
> > >
> >
>