我正在使用Instruments来处理一些低内存条件。我可以看到“物理内存空闲”监视器中的内存消耗下降到几MB,尽管Allocations显示所有分配约为3MB,总字节数为34MB。
自从将一些操作移动到一个带有NSOperationQueue的单独线程后,我开始遇到崩溃。但是在更改之前我没有使用Instruments。尽管如此,我相信我做了一些可以撤销的事情来阻止崩溃。
顺便说一句,没有连接Instruments或调试器时,应用程序要稳定得多。
我已经将泄漏减少到几乎没有(可能是崩溃前最多一百个字节)。
当我查看Allocations时,我只看到了非常基本的对象。而且它报告的总内存也非常低。所以我看不出我的应用程序是如何引起这些低内存警告的。
当我从启动时查看Heap Shots时,我没有看到超过3MB的内容,介于基线和所有堆增长值之间。
我应该查找什么来找到问题所在?例如,可以将其隔离为我的某个视图控制器实例或其他实例之一吗?
我已经做了以下操作: 我关闭并重新打开设备,这有了显着的改进。Instruments没有报告低内存警告。此外,我注意到重新启动之前启动时的“物理空闲内存”仅约为7MB,重新启动后约为60MB。
然而,我看到了一个非常定期(周期性)的“物理空闲内存”下降,从43MB降至6MB(然后再次上升到43MB)。我想知道是什么导致了这个问题。在这个应用程序中我没有运行任何定时器(timer)。 (我确实有一些performSelector:afterDelay:但在这些测试期间它们不活跃。)
我没有使用ARC。