美文网首页iOSiOS技巧学习_JMiOS三方库、好资料收集
SDWebImage和YYKit的内存、cpu使用分析

SDWebImage和YYKit的内存、cpu使用分析

作者: 不多满 | 来源:发表于2016-03-09 18:37 被阅读2828次

问题引言

近来使用SDWebImage获取网络gif图片时,发现内存猛增。如若再tableview中加载多张gif图片,很快就有内存警告出现,随之程序被系统kill。(如图1所示,原本不到1M的gif,程序运行后,内存占用了78.6M,但是cpu占用很低)

图1--SDWebImage内存占用.png

后来发现网络上流行的开源库YYKit,据说对图片处理的很好,就下载下来与SDWebImage进行了对比,发现:相比于SDWebImage,YYKit的内存使用的确是降低了,可是在cpu使用上面,居高不下。(如图2所示,同样的gif图片,程序运行后,内存占用只有10.3M,但是cpu持续占用)

图2--YYKit的cpu使用.png

这到底是为什么呢,我们来分析一下看看。

问题分析

首先,先看看SDWebImage运行过程中内存占用过高的问题。

通过instrucment分析,发现SDWebImage处理gif图片的方法是:将gif资源中每一张imgae写入到内存中,通过animatedImageWithImages的方式播放动画。这样的好处是,gif轮询播放时,直接从内存中取资源就好了,降低了cpu的占用。也就是说,SDWebImage是以空间换取的流畅度。


图3--sdwebimage内存占用分析.png

问题就在这里了,每张image占用内存1.2M,所以此gif中包含58张image,就会占用近70M的内存。当程序中的gif多了,就会出现内存警告。

然后,再来看看YYKit的cpu使用问题。

也是通过instrument分析,发现了YYKit处理gif图片的方法是:每次从缓存的gif中,读取当前需要展示的image,进行动画展示。这样做的好处是,不用为gif的每张image开辟空间了,每次都是从一份gif资源中读取一张image就好了。


图4--YYKit的cpu使用分析.png

那这个YYKit的cpu问题,也就不言而喻了,以一定的帧率从缓冲中解析出当前需要展示的image,肯定是需要耗用cpu的。

小结

问题分析也就到这里了,两个开源库各有特点,具体使用哪个,需要根据不同的业务需求决定。

相关文章

  • SDWebImage和YYKit的内存、cpu使用分析

    问题引言 近来使用SDWebImage获取网络gif图片时,发现内存猛增。如若再tableview中加载多张gif...

  • go tool 分析内存信息

    可以使用go tool分析CPU、内存占用情况时,pprof进行分析相关的cpu占用情况和内存占用情况:可以使用 ...

  • 解决block循环引用

    AFN ,SDWebImage YYKit库里用到

  • 静态/动态内存分析

    硬盘 -->内存-->CPU内存泄漏:内存空间使用完毕之后未回收 一、静态内存分析 静态内存分析:不运行程序,直接...

  • iOS 网络图片优化

    概述: iOS 开发中,很多app的网络图片处理使用SDwebImage或YYKit的YYImage,使用方便、稳...

  • 046-分析CPU负载率和CPU使用率

    使用TOP命令分析CPU的时候需要清楚CPU使用率和CPU负载率 CPU使用率 CPU负载率 CPU的性能分析

  • SDWebImage缓存部分实现源码解析

    SDWebImage主要使用SDImageCache来缓存图片,实现了内存存取和磁盘存取还有一系列的处理。下面分析...

  • Flink基础概念理解

    1、背景 降本增效大背景下,统计分析实时任务资源使用情况,核心关注任务配置的CPU、内存、 实际使用的CPU、内存...

  • java服务CPU占用高,排查解决

    命令使用 top命令按内存和cpu排序cpu排序:shift+p内存排序:shift+m 排查步骤 1.使用top...

  • 性能优化

    性能优化 - 因为手机CPU和内存受到限制,过多使用内存会可能会导致内存溢出、过度使用CPU可能会导致手机卡顿,从...

网友评论

    本文标题:SDWebImage和YYKit的内存、cpu使用分析

    本文链接:https://www.haomeiwen.com/subject/chftlttx.html