分配大的NSMutableArray会引起低内存警告吗?

4

我在我的应用程序中实现了一个NSMutableArray,其中大约有12,000个字符串。在分配仪器中,它大约需要1000 KB,并导致我的总分配量为2200 KB。

使用这样一个庞大的数组会引起低内存警告吗?

我注意到在分配仪器中出现了低内存警告。有没有办法查看设备的总使用/可用内存?

1个回答

3
虽然Instruments可以显示您的应用程序消耗了多少内存,但无法查看“可用”内存。这是由于许多原因:即使它向您显示了有多少内存“可用”,由于后台中有什么、是否在听音乐、是否在通话等,在现实情况下它变化很大,所以它不会太有用。
正是由于这个问题,你会收到内存警告:有几个级别,它们为您的应用程序提供了释放内存并避免被终止的机会。
然而,在大局中,您提到的2200 KB并不是很多(如果您需要可视化,一个1024x768的图像占用的内存比它还多)。所以我不会太担心:尽管如此,通过释放您不需要的对象来响应内存警告总是有益的。

并不完全正确。例如,我见过一些应用程序(比如游戏CHAOS)会告诉你如果没有15MB的可用内存就无法完成某些操作,所以我不确定这是通过malloc检查还是某个系统调用实现的,但肯定是可能的。 - Richard J. Ross III
从技术上讲,您可以使用mach获取可用内存 - 实际上没有什么意义,并且没有SDK方法可用。之所以没有实际意义是因为可用的物理内存并不等于可用于分配的总内存。需要重新启动才能工作或如果您没有足够的内存则无法运行的应用程序会给用户带来糟糕的体验(并且也违反商店指南)。更好的方法是仅依靠内存警告并负责任地管理内存。检查可用的物理内存有点像在对象上使用retainCount:极易误导。 - lxt
如果我正在使用分配工具,而且没有新的分配发生,但每隔几分钟我会看到低内存警告,这是因为我所做的分配还是可能是其他应用程序引起的? - Mausimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接