所以我有一张叠加了一堆 MKPolygonViews 的地图。当我在它上面放上一对时,如果我把它们都放在系统上,我会向系统发送一个 didReceiveMemoryWarning ,我通过删除覆盖层来响应该系统。
现在我想知道发生这种情况时它实际使用了多少内存,它只有 10MB 实际内存和 100MB 虚拟内存。当时的 SMS 应用程序使用 30MB 内存并且运行良好。还有其他应用程序,例如邮件,使用的不仅仅是我的应用程序。SpringBoard 增加了 5MB,所以没什么特别的。这也在 iPhone 4 上运行,所以应该有足够的内存(我的计算是大约 256MB 仍然可用)。
在我移除覆盖层后,内存占用仅下降约 1MB,当我重新打开它们时,它会上升 1MB,所以没有什么不寻常的。
那么发生了什么?内存警告是否来自图形内存或其他东西?这些叠加层的性能是否受到图形处理器的限制?当它们全部打开时,它在移动时确实使用了大约 60%,但这并不能解释糟糕的性能。
任何方向的答案将不胜感激。
编辑:Springboards 虚拟内存在覆盖打开的情况下上升到 450MB,一旦达到 512MB,它就会发送内存警告。这是导致问题的原因吗?总 VM 始终高于 512MB,因此它必须为 VM 使用闪存存储,因此不应导致内存警告