【问题标题】:iPhone: Xcode, instruments, memory allocations. What's reasonable?iPhone:Xcode、仪器、内存分配。什么是合理的?
【发布时间】:2011-09-12 17:54:04
【问题描述】:
我正在使用工具来分析我正在开发的 iPhone 应用程序中的内存使用情况。我想知道,合理的内存分配大小是多少?
当我获得关于我的目标的信息时,我是否应该选中这些框以忽略“NS”、“CF”和“Malloc”前缀?当我不忽略它们时,我得到的总字节数在启动时看起来相当大,大约为 47MB,尽管实时字节只有大约 6MB。当我确实忽略前缀时,我将获得大约 1MB 的整体空间,以及 350KB 的实时空间。忽略或不忽略前缀的充分理由是什么?这里,整体字节数和实时字节数有什么区别?
最后,如果需要,我可以通过哪些方式减少应用程序的内存占用?
【问题讨论】:
标签:
iphone
objective-c
xcode
memory-management
instruments
【解决方案1】:
忽略 NS、CF 或 Malloc 的复选框仅允许您过滤到总分配的不同子集。您是否检查它们取决于您要查找的内容。显然,不选中它们可以让您获得最全面的视图,但如果您正在寻找特定的内容,您可能希望忽略其他类别。
“实时”数据是尚未发布的数据,而“整体”是您曾经分配的所有数据,即使已发布。
请注意,“分配”工具只能让您查看已使用的堆内存。这是相当狭窄的。您的应用程序也直接或间接地将内存用于其他事情。此外,内存碎片可能会导致您的总内存使用量比分配工具中显示的要高得多,因为内存是由操作系统以 4k 页提供的。
您应该使用 VM Tracker 工具查看您的应用程序的总内存使用情况。