应用程序中的高内存使用率

时间:2014-04-18 11:56:05

标签: ios iphone objective-c memory uiimageview

我有一个应用程序,其中有12个图像包含在一个数组中。所有这些图像同时显示在屏幕上。 (1个视图 - 12个更宽和更高的图像(UIImageView' s)一个在另一个上。当用户做某事时,app移动图像,因此视图显示不同的场景) 图像本身并不太重(大小约为2500x5000,但整个图像文件夹大约为3.5 MB)。 加载后,该应用程序消耗355 MB。 当我在viewDidLoad中放置断点(并且当时加载所有图像)时,xcode显示应用程序仅消耗9 MB,但在viewDidAppear中它是355 MB。

这是什么原因?我怎样才能紧凑地存储图像? (我假设问题出现在图像中)。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

打开的图像将占用类似:H x W x number of channel x number of bit for channel的内容,文件大小是另一回事,因为图像是根据其类型进行压缩的。你的图像在记忆中每个都是50Mb 唯一的方法是在移动图像之前调整图像大小。网上有很多图片大小调整类别,只是google一点点。 另一个建议是不加载所有图像,只需将数组引入文件路径,然后懒惰地实例化图像。
如果您需要使用员工图像,则应该查找CATiledLayer和平铺技术。

答案 1 :(得分:0)

这些图像可能无法在屏幕上同时显示,因此您可能只想在必要时加载它们。

如果你仍然需要在屏幕上一起显示它们,请考虑减小它们的尺寸。

仍然,355Mb是巨大的。你在那个应用程序中做了什么,可能会占用所有内存吗?

答案 2 :(得分:0)

在Xcode中,转到Product-> Profile。你会发现很多有用的工具可以帮助你找到内存,CPU或电池使用方面的问题。但是,如果您以前没有看过它,请检查它。