When you do your stopObserving, you need to make sure you are passing the
exact function handler you used when registering the event.
var handler = function() { blah(); }.bindAsEventListener(this);
Event.observe(someElement, "click", handler);
...later:
Event.stopObserving(someElement, "click", handler);
NOTE: this is not going to work:
Event.observe(someElement, "click", function() { blah();
}.bindAsEventListener(this));
Event.stopObserving(someElement, "click", ???); //notice I don't have a
handle to that anonymous function I defined above so I can't stop observing
it
On Thu, Jul 17, 2008 at 9:45 AM, mtjs <[EMAIL PROTECTED]> wrote:
>
> Thanx for the replys.
>
> I am setting up event handles with 'observe'. I also use
> bindAsEventListener.
> Isn't it enough to do a 'stopObserving' on the events ?
>
> To know if I have a 'memory leak' (and to determing that the null'ing
> didn't work) I look @ the ... memory the browser is using. If it goes
> up, I have a leak. (if I add nothing to the page ofcoz :)) If I null
> the top reference, I have lesser memory that is added then if I don't
> do it, but since there was still mem addes, I figured it wasn't
> enough.
>
> Is there some kind of documentation on what you should watch to not
> create memory leaks ? Also is there some kind of tool to correctly see
> if you have memory leaks?
>
> Kind regards,
>
> Mtjs.
>
> On Jul 17, 3:44 pm, "Ryan Gahl" <[EMAIL PROTECTED]> wrote:
> > Manually nulling the top level reference should work just fine, as long
> as
> > there are no other references to the object in other scopes. Another big
> one
> > to check is DOM event handlers... are you setting any up? If so, part of
> > your destroying should include unattaching them first...
> >
> >
> >
> >
> >
> > On Thu, Jul 17, 2008 at 8:34 AM, kangax <[EMAIL PROTECTED]> wrote:
> >
> > > On Jul 17, 9:09 am, mtjs <[EMAIL PROTECTED]> wrote:
> > > > Hi,
> >
> > > > I have something like this :
> >
> > > > var myTestClass=Class.create({
> > > > initialize:function(opt) {
> > > > this.child=null;
> >
> > > > // do stuff that uses mem
> > > > // like create and show divs
> > > > // and so on
> >
> > > > },
> > > > myFnc:function(param) {
> >
> > > > }
> > > > });
> >
> > > > With this class I build a 'tree'.
> > > > (
> > > > in real life I use other code to do this : the child is assigned
> > > > from within the class, but that doesn't matter for my question
> > > > )
> >
> > > > var myOne=new myTestClass();
> > > > myOne.child=new myTestClass();
> > > > myOne.child.child=new myTestClass();
> > > > myOne.child.child.child=new myTestClass();
> >
> > > > I don't know how much childs there are, yet I want to free all the
> > > > memory.
> >
> > > > Main question :
> >
> > > > how can I do that ?
> >
> > > > can I do it by : myOne=null;
> >
> > > > should I free every instance ?
> > > > I tried it with a loop, first adding all childs to an array (if I
> > > > set the 'parent'
> > > > to 'null', I can't see what's in it anymore)
> >
> > > > var emptyList=new Array();
> > > > var tmp=myOne;
> > > > while (tmp) {
> > > > emptyList.push(tmp);
> > > > tmp=tmp.child;
> > > > }
> > > > for (var i=0; i<emptyList.length; i++) {
> > > > emptyList[i]=null;
> > > > }
> > > > This doesn't work: the 'reference' to the instance in
> 'emptyList[n]'
> > > > is a copy, not a
> > > > 'reference' so I just use more memory and then empty it again, yet
> I
> > > > don't free the
> > > > tree I've made in 'myOne'. (so far as I tested)
> >
> > > > can I destroy it from within 'myOne' (with a destory function or
> > > > something like that)
> > > > (I tried this=null in the class but that doesn't work ;))
> >
> > > All objects are actually "passed by reference" (including function
> > > ones). Only primitives are copied. How exactly did you determine that
> > > manual "nulling" doesn't work and only consumes more memory?
> >
> > > -- kangax
> >
> > --
> > Ryan Gahl
> > Manager, Senior Software Engineer
> > Nth Penguin, LLChttp://www.nthpenguin.com
> > --
> > WebWidgetry.com / MashupStudio.com
> > Future Home of the World's First Complete Web Platform
> > --
> > Inquire: 1-920-574-2218
> > Blog:http://www.someElement.com
> > LinkedIn Profile:http://www.linkedin.com/in/ryangahl- Hide quoted text -
> >
> > - Show quoted text -
> >
>
--
Ryan Gahl
Manager, Senior Software Engineer
Nth Penguin, LLC
http://www.nthpenguin.com
--
WebWidgetry.com / MashupStudio.com
Future Home of the World's First Complete Web Platform
--
Inquire: 1-920-574-2218
Blog: http://www.someElement.com
LinkedIn Profile: http://www.linkedin.com/in/ryangahl
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Prototype: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/prototype-core?hl=en
-~----------~----~----~----~------~----~------~--~---