[OpenLayers-Users] IE and memory usage problem

lukast lukast at poczta.fm
Thu Aug 7 04:25:25 EDT 2008


Hi,

I've got memory usage problem with OpenLayers 2.6 in IE 6. Memory seems to
slowly but instantly increase when using the map. I am using Drip 0.5 to
detect memory leaks - but it shows no memory leaks since I have installed
Windows SP3.

Apart from this I have got another problem with memory usage connected with
markers. I dynamically add several markers to the markers layer. Memory
increases very fast when I add Markers - 20 Markers - aproximatelly 10MB of
RAM :( 
Also when I remove these markers from the map memory stays on the same level
- but should be freed.
Here is the way I add markers to the map this way:

//icon initialization - only once for all markers
var iconSize = new OpenLayers.Size(20,20);
var iconOffset = new OpenLayers.Pixel(-(iconSize.w/2), -iconSize.h);
localizationIcon = new
OpenLayers.Icon(icon.localizationIcon,iconSize,iconOffset);

//add single marker

var currentIcon = localizationIcon.clone();
this.currentMarkers[index] = new OpenLayers.Marker(new
OpenLayers.LonLat(poi.x,poi.y),currentIcon);

//add popup for this marker

this.currentMarkers[index].events.register('mouseover',
this.currentMarkers[index], function(evt) { 

			var contentDiv = "<div style=\"font-size: 12px;color:
blue\">"+title+"</br>"+content+"</div>";
	
	var popup = new OpenLayers.Popup.Anchored("chicken", 
                                         new OpenLayers.LonLat(poi.x,poi.y),
                                         new
OpenLayers.Size(250,60),contentDiv,currentIcon,false);
			searchManager.currentPopup = popup;
			localizationLayer.map.addPopup(searchManager.currentPopup,true);
			searchManager.currentPopup.show();
			OpenLayers.Event.stop(evt); 
});
this.currentMarkers[index].events.register('mouseout',
this.currentMarkers[index], function(evt) {
			map.removePopup(searchManager.currentPopup);
			searchManager.currentPopup.destroy();
			searchManager.currentPopup = null;
			OpenLayers.Event.stop(evt); 
		});

//add new marker to the markers layer
localizationLayer.addMarker(this.currentMarkers[index]);


Removing markers looks like this:

for(i=0;i<this.currentMarkers.length;i++){
			localizationLayer.removeMarker(this.currentMarkers[i]);
			this.currentMarkers[i].destroy();
}
$(this.currentMarkers).clear();

What is wrong with that code ?

Appreciate any help.

Best Regards,
lukast

-- 
View this message in context: http://www.nabble.com/IE-and-memory-usage-problem-tp18866082p18866082.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.




More information about the Users mailing list