CoreImage内存使用率很高

Xyand

创建时,使用CIImage内存时,内存急剧跳升50MB-60MB CIIMage,然后在尝试创建UIImage结果时程序崩溃

CIImage *image = [CIImage imageWithData:data]; // +50MB memory increase (data is jpeg data)

它不会一直发生,但是对于较大的图像(3264x2448)以及在应用程序处于后台模式时,它的发生频率更高。

导致频繁崩溃。有任何想法吗?

马特

核心映像对映像大小有严格的限制。iOS 8在很大程度上取消了这些限制;如果您使用的是较早的系统,请不要这样做(即,将自己局限于较小的图像)。在iOS 7及更低版本中,GPU仅可用于尺寸小于4K的图像,这确实很小。

而且,在后台使用核心图像受到严格限制,因为毕竟,当某些前景应用正在使用它时,您的应用又怎敢尝试从后台进入GPU(一个小而忙碌的地方)?您被迫使用CPU(尽管在某种程度上,iOS 8中取消了此限制)。

因此,您的问题很可能部分与内存有关(试图将核心映像用于太大的映像),而部分与线程相关(如果您使用的是CPU,则需要确保您在后台线程,因为这将花费很长的时间,如果挂断主线程,看门狗将杀死您。

要考虑的另一件事是您如何自己管理内存。您没有显示任何相关代码,所以很难说,但是可能是因为您挂在不需要的数据上。您应该显示代码,理想情况下,您应该使用Instruments分析您的应用程序,以便准确知道问题出在哪里。

例如,您引用的唯一代码行是

CIImage *image = [CIImage imageWithData:data]

这表明您正在将数据保存在内存中。那完全没有必要。如果玩法正确,则可以直接从磁盘上的映像文件获取CIImage,并直接在磁盘上创建输出,而不会占用任何额外的内存。如果仅由于形成CIImage而产生大量内存,则可能做错了(CIImage只是一个指针,而不是位图)。唯一需要存储空间的时刻就是最终渲染,即形成位图的时间,您可以使用ImageIO将其导出到磁盘,而无需将其保存在内存中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SHMem内存使用率很高!

来自分类Dev

SHMem内存使用率很高!

来自分类Dev

很高的内存使用率,没有任何运行

来自分类Dev

很高的内存使用率,没有任何运行

来自分类Dev

OS X Dock的内存和CPU使用率很高

来自分类Dev

SpriteKit中的CPU使用率很高

来自分类Dev

virtfs的磁盘使用率很高

来自分类Dev

即使销毁套接字,Node.js的内存使用率仍然很高

来自分类Dev

subprocess.check_output没有很高的内存使用率

来自分类Dev

GNOME Shell具有很高的CPU和内存使用率

来自分类Dev

即使销毁了套接字,Node.js的内存使用率仍然很高

来自分类Dev

xpages-nhttp.exe的内存使用率很高(一个xpage大约100MB)

来自分类Dev

具有很高CPU使用率的gnome shell

来自分类Dev

Jenkins在CPU使用率很高的情况下运行

来自分类Dev

Python服务器程序的CPU使用率很高

来自分类Dev

Node.js的CPU使用率很高,如何调试?

来自分类Dev

不构建时,Android Studio的cpu使用率很高

来自分类Dev

openjdk zgc上的cpu使用率很高

来自分类Dev

具有很高CPU使用率的gnome shell

来自分类Dev

Google环聊的CPU使用率很高

来自分类Dev

explorer.exe的RAM使用率很高吗?

来自分类Dev

Windows 10上的CPU使用率很高

来自分类Dev

内存使用率异常(内存泄漏?)

来自分类Dev

标记使用率很高,标记Etwr使用非分页池的异常率很高

来自分类Dev

Mongod常驻内存使用率低

来自分类Dev

Percona 5.6高内存使用率

来自分类Dev

STXXL的高内存使用率

来自分类Dev

降低Compiz内存使用率

来自分类Dev

Gitlab CE的高内存使用率