IOS 映像内存使用情况



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

例如:我有一个图像,它的 2000w、2000h,但在这种情况下,iphone、iPod 有一个 460x920 的矩形(只是一个例子)......如果图像仅对iOS设备的矩形可见,我确定正在使用内存,但是当前未在矩形中绘制的图像的其余部分会发生什么情况?该内存是否正在消耗?或者iOS足够聪明,不只为绘制的部分使用内存?还是这被视为内存泄漏?

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

提前感谢您的回答。

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

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

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

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

不,这不是内存泄漏。

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

最新更新