2011-01-10 45 views
2

如问题所述,它死于7MB ..(iphone)当仪器显示“所有分配”只有7mb时,我的应用程序会收到内存警告?

这是正常的吗? (7MB ..)
仪器显示无泄漏。

谢谢

  • 编辑

编辑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++代码?这样我不必担心加载许多图像?不知道这是可能的。
或者可能为图像使用内存池,因为图像大小完全相同。

+0

为了记录,_mg_是毫克,质量单位的缩写。 =) – 2011-01-10 16:04:38

+0

哈哈感谢Bavarious – eugene 2011-01-10 16:11:43

回答

2

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

以我的经验,17Mb是在正常的偏低。

+0

关于ipad 3.2.1,除了测试这个应用程序之外没有做任何事情。 :( – eugene 2011-01-10 15:46:19

1

是的,这是正常的。但在iOS设备上处理内存有点棘手。

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

相关问题