xcode - 如何使用 Instruments 分析内存使用情况和性能?

标签 xcode performance profiling instruments allocation

在所有仪器跟踪模板中,我喜欢使用:

  • 用于检测对象过度释放的位置的僵尸,非常适合调试 EXEC_BAD_ACCESS 错误。
  • 泄漏以检测内存泄漏。
  • 核心动画和颜色混合层可检测帧速率和半透明 subview ,非常适合平滑 UITableView 滚动。

我总是听到人们说要分析我的应用的内存使用情况和性能。

  1. 为什么我应该分析内存使用情况和性能?我的应用程序运行良好。
  2. 我该怎么做?

我使用了分配,发现我的 iPhone 应用程序从 1 MB 的总分配内存开始,在正常使用后增长到​​ 5 MB。 iPhone 内存使用量过高是什么情况? iPad?麦克?

最佳答案

要回答其中的原因,分析内存使用情况对于 iOS 应用尤其重要,因为 iPhone 和 iPad 的 RAM 比 Mac 少得多。 iPhone 4 拥有 512 MB RAM,但早期版本只有 256 或 128 MB。考虑到操作系统使用的 RAM 和多任务处理,您的应用不会浪费太多 RAM,因此了解您的应用使用了多少内存非常重要。

当您的应用程序运行缓慢时,您通常会进行性能分析。对它进行分析以查找代码中的慢点,以便使代码运行得更快。如果您的应用运行良好,则无需过多分析性能。

要回答这个问题,请使用分配工具来测量内存使用情况。所有分配类别中的实时字节列告诉您应用程序当前使用的内存量。分配工具的堆快照分析可测量应用程序中的内存增长情况。使用跳转栏左侧的菜单进行堆快照分析。

Time Profiler 工具可以分析您的应用程序的性能。使用 Time Profiler 仪器的困难部分是解释结果。 Time Profiler 工具不会告诉您您的应用程序将 75% 的时间花在 Function X 上。您必须深入挖掘数据才能找到代码中的慢点。

关于可接受的内存使用量,这取决于您想要支持的设备和应用程序。像 Xcode 这样的应用程序使用 100 MB RAM 就可以了,但是像 TextEdit 这样的应用程序在一页文档中使用 100 MB 内存就会出现问题。对于 iOS 应用程序来说,5 MB 应该不成问题。

关于xcode - 如何使用 Instruments 分析内存使用情况和性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641540/

相关文章:

ios - Swift 错误声明委托(delegate)

xcode - 检查脚本中的 GCC_PREPROCESSOR_DEFINITIONS 参数

swift - 在初始化时将信息传递给类

objective-c - @property 以及 setter 和 getter

android - 每秒精确播放声音

c++ - 如何使 perf_event_open() 中的 PERF_COUNT_SW_CONTEXT_SWITCHES 配置起作用?

performance - 与C/C++最相关的性能指标

performance - 在 MATLAB 中采用早期救助

c# - 一个窗口中有 25 个 WPF 日历,打开窗口需要 5 秒

c++ - 如何将 etrace 与动态库一起使用以按时间顺序跟踪 C++ 中的函数调用?