【发布时间】:2012-03-16 17:13:27
【问题描述】:
我正在尝试使用仪器解决一些内存不足的情况。我可以在 Physical Memory Free 监视器中看到内存消耗下降到几 MB,即使 Allocations 显示 All Allocations 大约是 3 MB 而 Total Bytes 是 34 MB。
自从我使用 NSOperationQueue 将一些操作移至单独的线程后,我开始经历崩溃。但在改变之前我没有使用仪器。尽管如此,我敢打赌我做了一些我可以撤消的事情来阻止崩溃。
顺便说一句,它在不连接仪器或调试器的情况下稳定得多。
我几乎没有泄漏(崩溃前最多可能有一百个字节)。
当我查看分配时,我只看到非常原始的对象。而且它报告的总内存也很低。所以我看不到我的应用程序是如何导致这些低内存警告的。
当我从一开始就查看 Heap Shots 时,在基线和所有堆增长值的总和之间我看不到超过 3 MB。
我应该看什么才能找到问题所在?例如,我可以将它隔离到我的视图控制器实例之一吗?还是我的其他实例之一?
我做了什么: 我关闭并重新打开设备电源,这取得了显着的改进。 Instruments 未报告内存不足警告。另外,我注意到启动时的物理可用内存在重启前只有大约 7 MB,重启后大约为 60 MB。
但是,我看到物理可用内存非常规律(周期性)下降,从 43 MB 下降到 6 MB(然后又回到 43 MB)。我想知道是什么原因造成的。我没有在这个应用程序中运行任何计时器。 (我确实有一些 performSelector:afterDelay:,但在这些测试期间它们没有激活。)
我没有使用 ARC。
【问题讨论】:
-
您找到解决方案/解释了吗?我也有同样的问题。
标签: ios cocoa-touch memory-management instruments