1

我搜索如何找到我的问题。在我的 iPad 应用程序中,当我处理数据时,我增加了内存并且从不释放内存,我尝试仪器泄漏内存但没有发现内存泄漏(我尝试使用配置文件和分析)。

所以我的问题是他们有其他工具来查找内存泄漏或其他方法吗?

提前感谢您的考虑。

PS:我没有发布代码,因为这涉及我的代码的很大一部分,但内存增加的部分是我从 FTP 下载一些 zip 文件的部分(基于 Apple Doc 中的 SimpleFTPSample)我解压缩这些文件(使用框架minizip)这个 zip 文件包含一些图像和 XML 文件我解析这个 XML 文件(大约 7200 个 XML 文件和 35 000 个图像文件保存)我在数据库中保存了一些信息(解析问题)和它。如果你需要我的部分代码来帮助我问我。

4

2 回答 2

1

确保您是否在 Scheme:Diagnostics 中关闭了 Zombies。使用 Zombies 时,不会删除任何记忆。内存泄漏测试应始终在 Zombies 关闭的情况下进行。

于 2012-11-30T14:16:08.640 回答
0

这通常发生在您将对象保存在数据结构(例如 NSDictionary、NSArray 等)中时,即使您不再需要它们。检查 Instruments 的 Allocations 哪些对象是累积的,并签入您保存这些对象实例的代码。

另一个原因可能是长时间运行的线程。如果您提到的加载和解析是在一个需要很长时间的单个线程中完成的,那么您可能需要在某个循环中执行@autoreleasepool以强制定期清理临时对象。

也可能完全没有问题。你说你加载了很多图像。默认情况下,图像由 iOS 缓存,并且仅在需要清理内存时才释放。如果 Instruments “Trace Highlights” 显示大量内存使用,但 “Allocations” 没有,那么这可能是原因。

于 2012-11-30T14:24:16.293 回答