iPhone:Xcode、仪器、内存分配。什么是合理的?

标签 iphone objective-c xcode memory-management instruments

我正在使用仪器来分析我正在开发的 iPhone 应用程序中的内存使用情况。我想知道,什么是合理的内存分配大小?

当我获得关于我的目标的信息时,我是否应该选中忽略“NS”、“CF”和“Malloc”前缀的框?当我不忽略它们时,我得到的启动时总字节数似乎相当大,约为 47MB,尽管事件字节只有 6MB 左右。当我忽略前缀时,我将获得大约 1MB 的整体空间和 350KB 的实时空间。忽略或不忽略前缀的充分理由是什么?这里,总字节数和事件字节数之间有什么区别?

最后,如果需要,我可以通过哪些方式减少应用程序的内存占用?

最佳答案

忽略 NS、CF 或 Malloc 的复选框仅允许您过滤到总分配的不同子集。您是否检查它们取决于您要查找的内容。显然,将它们全部取消选中可为您提供最全面的 View ,但如果您正在寻找特定的内容,您可能希望忽略其他类别。

“实时”数据是尚未发布的数据,而“总体”是您曾经分配的所有数据,即使它已经发布。

请注意,“分配”工具只能让您查看已使用的堆内存。这非常狭窄。您的应用程序也会直接或间接地使用内存来做其他事情。此外,内存碎片可能导致您的总内存使用量比分配工具中显示的要高得多,因为操作系统以 4k 页的形式提供内存。

您应该使用 VM Tracker 工具来查看您的应用的总内存使用情况。

关于iPhone:Xcode、仪器、内存分配。什么是合理的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6310909/

相关文章:

ios - 如何在 iOS 中现有的 cocoa-pod 集中添加新库

ios - 如何在 SQLite 插入语句中正确转义单引号 - iOS

iphone - 我不知道如何在 iOS 6 中进行纵向和倒置

iphone - 半透明的 UINavigationController,模态呈现

ios - 这个 Objective-C/XCode 注释是什么//[START_EXCLUDE]

iphone - AVAudioPlayer 和 MPMusicPlayerController 有什么区别?

iPhone应用程序的核心数据,升级到App Store后?

swift - Swift 和 SafariServices.framework 上的 Twitter 身份验证

ios - iOS 应用程序进入后台后套接字连接终止

xcode - 运行项目时,iOS 8 Today 小部件不出现