ios - iOS 上使用 Memory Monitor 时虚拟内存消耗和实际内存的区别

标签 ios memory-management instruments virtual-memory

我的应用遇到了问题。到目前为止,我主要在我的 iPad 3 上进行测试,偶尔会检查我的 iPad 1 以确保一切正常。

我正在我的应用程序中播放一个 UIImageView 动画,它一直在退出,并且在退出之前只有一条“收到内存警告”消息。

我一直在仪器中使用对象分配工具,但据此,我的内存使用率很低。因此,经过一番研究后,我发现了 Larson 先生的这篇文章:https://stackoverflow.com/a/5627221/329900

现在我改用内存监视器工具。但是,我不明白我为什么要辞职。第一代。 iPad 有 256MB 内存。现在我知道我不能使用所有这些......有人说你不应该使用超过 100MB。

不过那是真实内存还是虚拟内存……或者可能是某种组合?我的真实内存始终在 20 - 25MB 之间,但虚拟内存在崩溃时约为 190 - 205MB。

这是一个截图:enter image description here

任何人都可以阐明这一点吗?

最佳答案

通过在 WWDC 2012 Session Videos 中搜索 iOS App Performance: Memory 找到的 WWDC(第 242 节)视频页面将使您更好地了解 VM 和实际内存之间的区别。

但这里有一个快速概述: A pointer Range = 2^32 = 4GB 这比任何设备上的物理内存都大(苹果已经发货)。这是通过获取所有可用空间并将其分成 4kb block 来完成的。并非您的应用程序可以访问的所有内存都同时位于物理内存中。这些 4kb 的 block 是调用页面。您的分配会从更大的虚拟内存块中分离出来。然后这些虚拟内存对象被映射到物理内存。

关于ios - iOS 上使用 Memory Monitor 时虚拟内存消耗和实际内存的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839239/

相关文章:

c++ - 内存区域和内存分配器有什么区别?

iphone - 仪器优化 UIImageView

ios - 为什么 Zombie Instruments 工具中的分配继续增加,而 Allocations Instruments 工具中却没有

ios - 使用 Alamofire 从提要中提取 JSON 数据

ios - 如何通过 API 调用使用 ChimpKit for iOS 添加到 MailChimp 列表而不验证电子邮件?

C++ Array Allocation Segmental Fault 11 新手

ios - Xcode Instruments 跟踪比较

iphone - 如何获取(提取)iOS系统应用程序的图标,例如地址簿应用程序?

iOS 8 小部件无法在 iPhone 6+ 8.0.2 上运行。 xCode 6.1

c# - .net 内存使用情况,决定私有(private)字节大小的因素