SDWebImage:
SDWebImage
运行过程中内存占用过高的问题相信很多同学都遇到过,特别是在处理gif
图片的时候,经常导致内存报警。
通过instrucment
分析,发现SDWebImage
处理gif
图片的方法是:将gif
资源中每一张imgae
写入到内存中,通过animatedImageWithImages
的方式播放动画。
这样的好处是,gif
轮询播放时,直接从内存中取资源就好了,降低了cpu
的占用。也就是说,SDWebImage
是以空间换取的流畅度,同时也就出现了内存占用过多的问题。
解决方法:
1、每次只加载一张图片,之前的立即释放:
// [[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];
2、使用YYWebimage代替。
YYImage:
通过instrument
分析,发现了YYImage
处理gif图片的方法是:每次从缓存的gif
中,读取当前需要展示的image
,进行动画展示。这样做的好处是,不用为gif
的每张image
开辟空间了,每次都是从一份gif
资源中读取一张image
就好了,对应的,cpu
的资源开销自然也就上来了。
至于如何抉择,看个人咯~
网友评论