【发布时间】:2011-01-10 14:12:44
【问题描述】:
我正在开发一个主要使用地址簿和数据库的 iPhone 应用程序。从通讯录中获取大约 3000 个联系人后,我将字符串标签附加到联系人(每个 5 个)。我正在将我的标签保存在数据库中。
出于负载测试的目的,我在应用程序中添加了 10,000 个标签。但是在我的应用程序的负载测试期间,我观察到一些与应用程序代码无关但代表一组指令集的内存泄漏。 Instruments 还显示 Foundation 是泄漏的负责库(广泛使用属于 Foundation 框架的NSString、NSDictionary、NSArray)。我的应用程序在使用 10 到 15 分钟后崩溃。崩溃报告中提到,应用程序由于内存不足而崩溃。
使用 CLANG 的内存分析显示零泄漏。我如何解决这些内存泄漏? 这些泄漏是坠机背后的真正罪魁祸首吗?是否有任何其他工具可用于检查内存泄漏?
【问题讨论】:
-
这可能是一个自动释放问题。如果你分批做,它仍然会发生吗?也就是说,在运行循环的不同迭代中?也许用它自己的池来包装操作。
-
是的,一旦应用程序收到内存警告,我尝试排空自动释放池,但排空池也没有好处。
-
您应该知道泄漏是否是罪魁祸首,Instruments 说您泄漏了多少内存?
-
仪器显示高达 25 MB 的实时字节然后崩溃,有时它仅在 12 MB 的实时字节后崩溃。
-
它是明确的泄漏吗?或者更确切地说是分配问题(例如,您使用了太多内存)?
标签: iphone xcode iphone-sdk-3.0 ios4