[OpenLayers-Users] Markers' events memory leak?
Donal
donal_regan10 at YAHOO.CO.UK
Thu Feb 15 04:11:19 EST 2007
Hello,
I have a GeoRSS layer which displays a number of icons equal to the value of
a select box e.g. 10,25,50,100.
When the select box changes value, the GeoRSS layer is destroyed and a new
layer is displayed with the new number of icons. I notice in IE 6 that the
memory used steadily increases as I repeatedly change (up and down) the
value in the select box.
I see that when a marker is initialized, BROWSER_EVENTS are attached to the
marker's element (this.icon.imageDiv) with a call to
OpenLayers.Event.observe(element,eventType,this.handleBrowserEvent.bindAsEventListener(this));
in Events.js attachToElement() function.
If I comment out the call to attachToElement, the memory used stays fairly
constant as I change the select box value (but obviously my markers have no
events associated with them which isn't much use). This suggests to me that
events not being detached/removed properly are the cause of the leak.
So I want to try something like
OpenLayers.Event.stopObserving(this.icon.imageDiv, "mouseover", observer);
for each of the BROWSER_EVENTS as the markers are destroyed but I am not
sure what I should put as the value for observer.
I have tried
adding the following propeties to the Events object
this.obs_handles = new Object();
this.obs_handles[element] = new Array();
and then in attachToElement doing
this.obs_handles[element][eventType] =
this.handleBrowserEvent.bindAsEventListener(this);
OpenLayers.Event.observe(element, eventType,
this.obs_handles[element][eventType]);
and then in Markers.destroy() adding
OpenLayers.Event.stopObserving(this.icon.imageDiv,"mouseover",this.events.obs_handles[this.icon.imageDiv]["mouseover"]);
OpenLayers.Event.stopObserving(this.icon.imageDiv,"mouseout",this.events.obs_handles[this.icon.imageDiv]["mouseout"]);
OpenLayers.Event.stopObserving(this.icon.imageDiv,"mousedown",this.events.obs_handles[this.icon.imageDiv]["mousedown"]);
etc;
this.events.obs_handles[this.icon.imageDiv] = null;
this.events.obs_handles = null;
but this has no effect.
Am I barking up the wrong tree? Any help/advice will be gratefully received.
Thanks,
Donal
--
View this message in context: http://www.nabble.com/Markers%27-events-memory-leak--tf3232599.html#a8981980
Sent from the OpenLayers Users mailing list archive at Nabble.com.
More information about the Users
mailing list