IOS图像内存使用情况

时间:2012-04-08 05:37:38

标签: ios image memory memory-leaks cocos2d-iphone

我想知道iOS在显示图像时如何利用内存......

例如: 我有一个2000w,2000h的图像,但在这个特殊情况下的iphone,ipod有一个460x920的矩形(只是一个例子)...如果图像只是iOS设备的矩形可见,我肯定知道正在使用内存,但是在矩形中当前没有绘制的图像的其余部分会发生什么?那个记忆被消耗了吗?或iOS足够聪明,不仅仅为绘制的部分使用内存?或者这被视为内存泄漏?

我想知道这一点,因为在某些游戏中你需要更长的场景,大图像使用视差或类似的帮助。但我开始想知道这会如何影响我的记忆。

提前感谢您的回答。

2 个答案:

答案 0 :(得分:8)

在iPhone 4上你有512MB的RAM。它在CPU和GPU之间共享,这意味着视频RAM占用了它的一部分。

如果你在谈论分配2000 x 2000像素的UIImage。即使它在屏幕外, DOES 消耗RAM。确切地说,它消耗2000 * 2000 * 4,大约16MB。这由Objective-c运行时管理。这是一个相当大的数额。据我所知,4系列设备上UIImage的最大尺寸为2048x2048,3个系列为1024x1024。

查看矩形或您正在谈论的屏幕是视频RAM的一部分。典型的显示过程包括在视频RAM中合成图像,以便图形硬件可以显示它。

因此,在这512MB RAM中有两个图像副本。一个可以通过代码(RAM)加载和修改,另一个是较小的一个用于显示(VRAM)。虽然在VRAM中,但只使用了屏幕的大小。

不,这不是内存泄漏。

答案 1 :(得分:2)

是的,将整个图像加载到内存中。您可以使用CATiledLayer之类的东西来更好地管理图像。

相关问题