memory - iOS6 MKMapView 使用大量内存,导致应用程序崩溃,其他人注意到了吗?

标签 memory memory-management mkmapview ios6 ios6-maps

在他们的 iOS 6 应用程序中使用 map 的其他人是否注意到内存使用量极高,以至于反复收到内存警告,甚至导致应用程序崩溃?

我已经通过仪器运行了该应用程序,并且没有看到任何泄漏,并且在创建 map View 之前,该应用程序始终以大约 3mb 实时字节运行。创建 map 并下载图 block 后,Live Bytes 会跃升至 ~13mb Live Bytes。然后,当我四处移动 map 并放大和缩小 Live Bytes 时,Live Bytes 会不断攀升,直到应用程序在大约 40mb Live Bytes 处崩溃。顺便说一句,这是在 iPhone 4 上。在 iPod touch 上,它崩溃得更早。

我正在正确地重用注释 View 并且没有任何泄漏。其他人在新的 iOS 6 map 中看到同样的高内存使用情况吗?另外,有没有人有解决办法?

最佳答案

经过大量的尝试和测试不同的想法(这里提到了其中的一些),对我有用的最终解决方案如下。

  • 我没有在应用程序中根据需要创建新的 MKMapView,而是向我的 AppDelegate 添加了一个 mkMapView 属性,并且只在需要时创建它。一旦它被创建,它就永远存在于 AppDelegate 中,并且我在任何需要的地方重用该单个实例。这确实有助于减少使用的内存量,因为我之前实例化了几个不同的 MKMapView,并且两者都很快消耗了内存。

  • 我还发现,一旦收到内存警告,iOS 6 map 就可以很好地处理释放内存。是的,它在缩放和平移时确实会消耗更多内存,但似乎可以适本地响应内存警告。

  • 我要做的最后一件事是减少我的整体初始内存占用。我注意到我开始的时候比我预期的要高,所以这也导致了我收到的与内存有关的崩溃。一旦我降低了初始占用空间,让 MKMapView 在内存警告期间处理释放它的内存,并确保我只有 1 个 MKMapView 实例可以在整个应用程序中重用,一切都运行良好。

关于memory - iOS6 MKMapView 使用大量内存,导致应用程序崩溃,其他人注意到了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641658/

相关文章:

c++ - 将整数序列写入全局内存的快速(est)方法?

memory-management - 'unowned(safe)' 和 'unowned(unsafe)' 之间的 Swift 有什么区别?

java - Java创建的OutOfMemoryError对象在哪里

iphone - 防止触摸传播到下面的注释

iphone - 两次选择 MapView 注释

android - Android Studio 中具有高内存分配的堆转储永远不会完成

c++ - openssl:减少内存使用

c# - 无法解释的内存泄漏与 Marshal.StructureToPtr

c - 当影响 int 的值时明显出现段错误

objective-c - 将 mapView.userLocation.location.coordinate.longitude 保存到 sqlite 数据库中