了解Alloc中仪器的负责任呼叫者

时间:2011-11-29 10:51:14

标签: ios instruments

我正在使用工具来消耗更多内存。我总是得到Living字节和总字节数相同。我相信在我的代码中没有发生多少重新分配。这是一个不好的迹象。

当我去寻找负责的来电者并追查它是什么时,我找不到它。负责的调用者是_dydldstart和NSStringFromClass。

这种行为是正常的吗?如何检查确切负责的来电者?

2 个答案:

答案 0 :(得分:0)

生活字节和总字节数列相同的原因很可能是仪器仅跟踪活动分配。如果您希望Instruments跟踪所有内容,请单击仪器列表中Allocations仪器旁边的Info按钮,然后取消选中Only track active allocation复选框。

打开扩展详细信息视图会显示内存分配的调用堆栈,这样可以更轻松地找到确切负责的调用方。选择查看>扩展详细信息以打开扩展详细信息视图。

调用树视图还可以帮助您确定在代码中分配内存的位置。使用跳转栏切换到调用树视图。

答案 1 :(得分:0)

“我总是将Living字节和总字节数相同”。

我遇到这个问题只是因为我在测试仪器中的应用程序时将NSZombieEnabled设置为环境变量。禁用该变量后,问题就消失了。

NSZombieEnabled我认为不会释放任何变量。

我不确定删除NSZombieEnabled是否解决了问题。

我实际上是以两种不同的方式使用分配。只有与Leaks Tool一起使用时,我遇到了问题。

我的另一个问题是这个问题的答案:

Ambiguities in using Instruments for iOS Development