我正在为 iPhone 开发一个应用程序,但遇到了一些内存管理问题。在应用程序执行期间,活动字节数不断增加而不受限制。我试图在我的代码中追踪问题,但似乎找不到任何会导致活动字节急剧增加的东西。我在执行过程中注意到的一件事是 CFString(Immutable) 的分配增长最快,并且永远不会减少或保持不变。有谁知道为什么会发生这种情况?在此执行期间,应用程序所做的所有事情都是从本地数组或字符串填充表视图,然后下载另一个字符串对象数组并填充不同的表视图。我正在使用 ARC。
问问题
2003 次
1 回答
1
鉴于缺乏任何具体的进展,我会给你一些一般建议:
有关如何使用 Instruments查找泄漏的指导,请参阅使用 Instruments 查找泄漏。
有关如何从您的分配到对这些分配的来源进行更有意义的分析的具体建议,请参阅此Stack Overflow 答案的第 4 点。简而言之,突出显示您在分配中无法解释的跳跃,设置底部窗口以显示调用树,隐藏系统库,并查看您的哪些例程正在消耗内存。
此外,不要忽视静态分析器,如果您不使用 ARC,或者如果您使用任何 Core Foundation 调用,这一点尤其重要。
你在用 Core Foundation 函数做任何事情吗?如果是这样,您显然需要知道您要么必须明确地将所有权转移给 ARC(使用 要么
CFBridgingRelease
) ,__bridge_transfer
要么手动调用CFRelease
. 不过,我之前的静态分析器会向您指出这一点。
于 2013-01-07T22:36:56.443 回答