【发布时间】:2010-01-01 12:29:06
【问题描述】:
我正在寻找清除我应用的所有漏洞。
如下图所示,SQLite 会造成大量内存泄漏。 我确实通过 CoreData 使用 SQLite。最奇怪的是,AdresseBook 导致所有 libsqlite3 泄漏,而我从不使用 AdressBook!!!
你有什么想法吗?
谢谢你:)
【问题讨论】:
标签: iphone sqlite memory-leaks
我正在寻找清除我应用的所有漏洞。
如下图所示,SQLite 会造成大量内存泄漏。 我确实通过 CoreData 使用 SQLite。最奇怪的是,AdresseBook 导致所有 libsqlite3 泄漏,而我从不使用 AdressBook!!!
你有什么想法吗?
谢谢你:)
【问题讨论】:
标签: iphone sqlite memory-leaks
CoreData 不会产生任何已知的泄漏,因此您的应用必须以某种方式触发它。 AddressBook 是 iPhone 上一个相对普遍的框架,因为其他系统框架最终会拉入 AB 和 AB 的数据。
因此,您的应用中有一些东西触发了 AB 的使用,然后触发了 CoreData 的使用。
无论如何,由于您不直接使用 SQLite,因此您应该将分析工作重点放在堆栈跟踪中;在您的代码和系统框架之间的接口处。看那张截图,有两个可疑的属性:
第 46、47 和 48 帧没有符号。您正在运行调试版本吗?如果没有,请执行此操作,并且应该解决这些帧。
提到了一堆与线程相关的东西。你绝对确定你已经正确地完成了你的线程吗?在线程应用程序中创建泄漏非常容易。
(也有可能这些“泄密”并不是真正的泄密,而是误报。可能不是,但有小概率是在追鬼)
在任何情况下,修复泄漏的最佳方法是首先关注容易发生的泄漏——你理解的那些——然后看看还有什么。许多泄漏通常是其他泄漏的副产品。
【讨论】:
我们能看到整个轨迹吗?
另外我猜你已经运行了静态分析器?如果没有,您可以通过以下方式找到它:构建 -> 构建和分析
【讨论】: