【发布时间】:2014-06-13 15:44:50
【问题描述】:
我正在运行一个测试,以确保通过将相关代码部分包装在一个 10 秒长的 while 循环中来正确释放对象。我在 Debug 和 Release 配置中运行了测试,结果不同。
调试(在模拟器中构建并运行):
发布(在设备上构建和运行,并使用仪器配置文件):
CPU 峰值表示创建和销毁对象的位置(每次运行有 3 个)。请注意在 Debug 构建中,内存使用量如何在繁忙循环期间逐渐上升,然后在更高的基本级别稍稍稳定下来,每次循环迭代都会发生这种情况。在发布版本中,它始终保持不变。在运行 3 次后,Debug 版本的内存使用水平明显高于 Release 版本。 (CPU 峰值在时间轴上相对于彼此偏移,但这只是因为我在不同时间按下了触发循环的按钮。
有问题的内部循环代码非常简单,基本上由一堆正确配对的malloc 和free 语句以及一堆retain 和release 调用组成(由ARC提供,也验证为正确配对)。
知道是什么导致了这种行为吗?
【问题讨论】:
标签: objective-c automatic-ref-counting instruments