我的应用程序在大约 20 分钟后崩溃,状态为 101(我相信内存不足)
使用 Instruments - ObjectAlloc 和 Leaks 进行调试没有给我任何线索。ObjectAlloc 图保持在大约 100 万字节 (1MB) 的稳定水平,分配的 Net # 也是如此。我已经摆脱了所有的泄漏。
我认为这可能与线程数有关,但在 ObjectAlloc 中绘制这些图也表明它们是恒定的。
谁能指出我使用另一种工具或另一种调查途径的方向?
我的应用程序在大约 20 分钟后崩溃,状态为 101(我相信内存不足)
使用 Instruments - ObjectAlloc 和 Leaks 进行调试没有给我任何线索。ObjectAlloc 图保持在大约 100 万字节 (1MB) 的稳定水平,分配的 Net # 也是如此。我已经摆脱了所有的泄漏。
我认为这可能与线程数有关,但在 ObjectAlloc 中绘制这些图也表明它们是恒定的。
谁能指出我使用另一种工具或另一种调查途径的方向?
修复 Clang 找到的所有内容。LLVM Clang 静态分析
请记住,系统分配的对象(包括图像和声音之类的东西)不会在 Instruments 中被跟踪(当然,顶级保留计数可以)。因此,您可以加载图像,例如,这不会对您的内存使用量产生太大影响,但会消耗大量实际内存!
如果这些都没有引起任何共鸣,您可以尝试减法调试方法 - (复制您的项目)删除功能块,直到问题消失或您获得重现它的最小可能东西。这至少应该可以帮助您找到瓶颈所在。诚然,这会很困难(a)因为每次测试时您都必须等待 20 分钟左右(但如果您将其设为后台程序,那还不错)和(b)因为内存问题的本质是可能不是一个单一的原因,而是一大堆较小的原因。
祝你好运!
我对 Object Alloc 的体验并不那么好。它并不总是为您提供应用程序使用的实际内存。
相反,将 Object Alloc 与 Activity Monitor 一起使用。确保使用活动监视器中的“可用物理内存”和“已使用物理内存”选项。这将准确地告诉您应用程序正在使用多少内存。
你说的“好水平”是什么意思。它根本不会随着时间的推移而上升吗?总共有多少内存 - 可能只是手机需要一些内存来存储其他应用程序,而你的内存太大而无法使用。
错误代码 101 表示 iPhone OS 强制退出您的应用程序。如果您在应用程序中使用 UIImageViews,请务必管理它们的内存。我发现一旦我的应用程序超过 10/12 MB,iPhone 就会终止它。
如果您不使用任何图像视图(或大图像),那么您的后端代码会占用太多空间。
我只能说,您需要更仔细地查看您的分配,并随时管理您在内存中保留的视图。
在 Instruments 中运行您的应用程序(运行 -> 使用 Performamce Tool 开始 -> 泄漏)以查看内存分配的位置。
希望这可以帮助!