(iphone)当乐器显示“所有分配”仅7mb时,我的应用程序会收到内存警告?

时间:2011-01-10 15:33:24

标签: iphone memory limit

问题是,它死于7mb ..

这是正常的吗? (7mb ..)
仪器显示没有泄漏。

谢谢

  • EDIT

编辑17mb - > 7MB。 我通过取出我分配的不必要的池来降低内存使用量。

然而,它在7 mb时获得内存警告.. 我实际上是在创建图像并在收到警告时不断发布它们。

我做了很多

- (UIImage*) allocImage
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    UIImage* uiImage = [UIImage imageWithData: imageData];
    UIImage* changedImage = [uiImage changeColor: self.currentColor];
    uiImage = changedImage;
    [uiImage retain];
    [pool release];

    return uiImage;
}

并释放我得到的uiImage(仪器显示内存增加2-3 MB,然后回到7mb)

每个图像在内存上都是1mb大,到应用程序收到警告时,我应该创建/销毁图像大约100次。

  • 编辑2

发现了类似的情况,虽然没有解决方案..

My iphone app gets memory warning and killed at 6.8MB
Memory Warning but Small Live Bytes

也许我应该将“创建UIImage”转移到c / c ++代码?所以我不必担心加载很多图像?不知道是否可能。
或者可以使用内存池作为图像,因为图像大小完全相同。

2 个答案:

答案 0 :(得分:2)

这取决于很多因素,相关设备,iOS版本,设备上同时发生的其他事情等等。基本上,您应该在到达时认真对待警告。获得警告不是问题。当你得到它们时什么也不做是个坏主意。

根据我的经验,17Mb处于正常的低端。

答案 1 :(得分:1)

是的,这很正常。但是在iOS设备上使用内存有点棘手。

首先,您必须知道可用内存量 - 您可以在http://adeem.me/blog/2009/04/01/get-the-amount-of-free-memory-available/找到一些源代码。 然后进行一些无分配的迭代,其大小小于测量值(此操作会强制另一个应用程序释放内存)。之后,再次测量可用内存,并且,您会感到惊讶 - 可用内存的大小已经增长。