【发布时间】:2011-01-05 23:31:33
【问题描述】:
我正在加载 100 个 4k-8k png 文件(768*768 分辨率),总共不到 1mg。
虽然我确实将它们转换为 UIImage 并偶尔调整/合并图像,
由于图像加载导致内存警告,我很惊讶地看到 ipad 设备死机。
转换为 UIImage 占用的内存是否比文件的实际字节大小多得多?
谢谢。
【问题讨论】:
我正在加载 100 个 4k-8k png 文件(768*768 分辨率),总共不到 1mg。
虽然我确实将它们转换为 UIImage 并偶尔调整/合并图像,
由于图像加载导致内存警告,我很惊讶地看到 ipad 设备死机。
转换为 UIImage 占用的内存是否比文件的实际字节大小多得多?
谢谢。
【问题讨论】:
这是因为 png 被解压到内存中,占用了更多内存。并且每张解压后的图片最多会占用 768*768*4 = 2.25 MByte 的内存。
【讨论】:
如果图片并非全部用于同时显示,您可能需要考虑如何加载图片。这里和其他地方有很多关于此的主题,例如this thread。
UIImage imageNamed 会缓存图片(有时 Apple 的缓存有点问题,没有正确释放)而UIImage imageWithData 不会,所以一旦不再显示,内存就会被释放。根据您的情况,两者都有优点和缺点,因此请尽量了解差异。
【讨论】: