永久释放 MkMapView 的内存
Free up memory from MkMapView for good
事情是这样的,我在 swift 上写了一个演示应用程序,我的 MkMapView 从我的可用内存(使用模拟器)的 60mb 到 80mb 起飞,所以我想释放它,特别是因为它当我再次单击 "Open map" 按钮时,无论如何都会完全重新加载地图。
所以我要覆盖 func viewWillDisappear
并且我尝试 运行 的代码将是:
self.mapView.mapType = MKMapType.Hybrid
self.mapView.mapType = MKMapType.Standard
self.mapView.showsUserLocation = false
self.mapView.delegate = nil
self.mapView.removeFromSuperview()
self.mapView = nil
但是,这些都不起作用。
通过此更改,我的应用程序在全新启动后保持 ~20mb,然后我单击 "Open man" 按钮,内存使用量跳升至 170mb(!),之后我可以使用 navBarButton 跳回,但内存使用量不会低于 ~120或类似的东西。这是病了。我要恢复记忆!
事实证明,模拟器在显示地图和其他东西时占用那么多内存是可以的。
如果您担心应用程序的内存效率,请尝试使用真实设备(在您发疯之前),因为真实设备和模拟器之间的内存使用量可能相差 5 倍或更多。
事情是这样的,我在 swift 上写了一个演示应用程序,我的 MkMapView 从我的可用内存(使用模拟器)的 60mb 到 80mb 起飞,所以我想释放它,特别是因为它当我再次单击 "Open map" 按钮时,无论如何都会完全重新加载地图。
所以我要覆盖 func viewWillDisappear
并且我尝试 运行 的代码将是:
self.mapView.mapType = MKMapType.Hybrid
self.mapView.mapType = MKMapType.Standard
self.mapView.showsUserLocation = false
self.mapView.delegate = nil
self.mapView.removeFromSuperview()
self.mapView = nil
但是,这些都不起作用。 通过此更改,我的应用程序在全新启动后保持 ~20mb,然后我单击 "Open man" 按钮,内存使用量跳升至 170mb(!),之后我可以使用 navBarButton 跳回,但内存使用量不会低于 ~120或类似的东西。这是病了。我要恢复记忆!
事实证明,模拟器在显示地图和其他东西时占用那么多内存是可以的。
如果您担心应用程序的内存效率,请尝试使用真实设备(在您发疯之前),因为真实设备和模拟器之间的内存使用量可能相差 5 倍或更多。