For those journerying here in 2014+ (iOS8 and up)
I am running into this problem on iOS 7+ trying to support older devices (think Ipad 2 with 512MB).
My solution is to disable Zoom as it easily takes the most memory.
long mem = [NSProcessInfo processInfo].physicalMemory;
if(mem < _memory_threshold){
self.MapView.zoomEnabled = NO;
}
I have tried everything from switching map types, to deallocating the map, setting the delegate to nil, removing all overlays, annotations etc.
None of that works on iOS7+. In fact, most of these fixes cause jumps in memory, as MKMapView seems to leak and never properly dealloc (I have verified through sub-classing that I see dealloc hit).
This sucks, but all I have came up with so far is disabling map features (zoom, scroll, user interactions) as a means to limit the atrocious amount of memory MKMapView takes. This has resulted in my App at the very least being semi-stable on older devices.