这是正常的吗? (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次。
发现了类似的情况,虽然没有解决方案..
My iphone app gets memory warning and killed at 6.8MB
Memory Warning but Small Live Bytes
也许我应该将“创建UIImage”转移到c / c ++代码?所以我不必担心加载很多图像?不知道是否可能。
或者可以使用内存池作为图像,因为图像大小完全相同。
答案 0 :(得分:2)
这取决于很多因素,相关设备,iOS版本,设备上同时发生的其他事情等等。基本上,您应该在到达时认真对待警告。获得警告不是问题。当你得到它们时什么也不做是个坏主意。
根据我的经验,17Mb处于正常的低端。
答案 1 :(得分:1)
是的,这很正常。但是在iOS设备上使用内存有点棘手。
首先,您必须知道可用内存量 - 您可以在http://adeem.me/blog/2009/04/01/get-the-amount-of-free-memory-available/找到一些源代码。 然后进行一些无分配的迭代,其大小小于测量值(此操作会强制另一个应用程序释放内存)。之后,再次测量可用内存,并且,您会感到惊讶 - 可用内存的大小已经增长。