我希望确保我的应用程序不会在仍然相当资源受限的设备上消耗太多内存。几天前,我使用 Instruments 来确定我的应用程序使用了多少内存,而我为 Live Bytes 获得了大约4-8 MB的内存。今天我再次运行仪器,我的Live Bytes大约为30-35兆字节。我不相信我在这两次代码之间对代码做了任何重大更改。
我的应用使用带有自定义图块叠加层的MKMapView
。我推迟了很长一段时间更新XCode,所以我怀疑差异可能是我的iOS模拟器几天前还在使用Google而不是Apple地图,直到我升级了XCode。
作为一个小测试,我创建了一个新的测试应用程序,只有MKMapView
,没有别的,并在其上运行了仪器。这个应用程序的Live Bytes通常是 50-90 兆字节的顺序,即使它没有任何自定义代码 - 我只是拖动'删除MKMapView。
这是否故意代表Apple为新地图使用这么多内存我不知道。也许地图图块是在应用程序之间共享的,这很好。无论哪种方式,由于大多数早期的建议大约为5-20MB,而且Apple的MKMapView本身消耗50-90MB,因此对于我可以安全使用的Live Bytes数量的合理近似非常复杂。
我现在可以通过使用Live Bytes失败来获得另一个有用的指标吗?
编辑:对于其他人来说,这是一个合法的内存管理问题并导致应用崩溃:iOS6 MKMapView using a ton of memory, to the point of crashing the app, anyone else notice this?