我正在为iPhone开发应用程序,但遇到了一些内存管理问题。在执行应用程序期间,实时字节不断增加而不受限制。我试图在我的代码中追踪问题,但似乎找不到任何会导致实时字节增加如此显着的东西。我在执行过程中注意到的一件事是CFString(不可变)的分配增加最快,永不减少或保持不变。有谁知道为什么会这样?应用程序在执行期间执行的所有操作都是从本地数组或字符串填充表视图,然后下载另一个字符串对象数组并填充不同的表视图。我正在使用ARC。
答案 0 :(得分:1)
由于缺乏具体的内容,我会给你一些总体建议:
有关如何使用Instruments查找泄漏的指导,请参阅Finding leaks with Instruments。
有关如何从您的分配,到对这些分配来源进行更有意义的分析的具体建议,请参阅此Stack Overflow answer的第4点。简而言之,在分配中突出显示一个无法解释的跳转,设置底部窗口以显示调用树,隐藏系统库,并查看内存消耗的例程。
另外,请不要忽略static analyzer,如果您不使用ARC,或者使用任何Core Foundation调用,这一点尤其重要。
您在使用Core Foundation功能吗?如果是这样,您显然需要知道您必须明确将所有权转移到ARC(使用CFBridgingRelease
或__bridge_transfer
)或手动调用CFRelease
。我之前提到的静态分析仪会向你指出这一点。