SDWebImage加载多张图片时内存暴增

最近项目中遇到一个问题

在tableview上展示多张图片,在加载的过程中,图片过多时,加载几张图片就崩溃了。内存溢出

                                                     

为什么会出现这种情况

这个原因其实很明显,SDWebImage产生的图片缓存过多,造成APP内存溢出,崩溃了。

有三个解决办法:

方法一:

         然后更改图片的大小,在tableview中展示缩略图,点击查看的时候显示原图。减少由于加载原图而占用过多的内存。缩略图的生成在服务端实现。

方法二:

可以每次加载图片清空memcache,但是效果并不好。

先清除SDImageCache缓存数据

SDImageCache *cache = [SDImageCache sharedImageCache];

[cache clearMemory];
 [[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];

使用下面这个方法的地方全部注掉

+ (UIImage *)decodedImageWithImage:(UIImage *)image 

但是效果并不明显。同时加载比较多的高分辨率图片内存还是暴增

 

方法三:

更改SDWebImage的SDK,或者采用AFNetworking中的类别方法来加载图片,

 插入

#import "UIImageView+AFNetworking.h"

UIImageView调用下列类别方法

 [cell.imageView setImageWithURL:[NSURL URLWithString:img] placeholderImage:[UIImage imageNamed:@"image_placeholder"]];

真机测试,发现加载一张图片的内存在1~2M之间(如下图),之前SDWebImage加载时为一张图片为40多M,大幅降低了内存;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值