解决SDWebimage加载过多过大图片导致内存爆表崩溃的问题

问题:

Restore the connection to “xxxx” and run “xx” again, 
or if “xx” is still running, 
you can attach to it by selecting Debug > Attach to Process > xx.

在这里插入图片描述

原因:

collectionView一屏加载显示多个大图,导致内存消耗激增,程序被系统关闭。

(这里collectionView已经实现重用,高度以及view统一布局,主要内存问题在于图片的请求和加载处理过程)

  • 1、图片太大,服务器没有做相关压缩及缩略图处理
  • 2、SDWebimage同时加载过多过大高分辨率图片,内存消耗爆表。

解决方向:

  • 1、服务端处理图片,压缩以及做缩略图处理。(暂时没有)
  • 2、上传图片作压缩处理,在不损耗质量的前提下尽量压缩。(尽量去做,但是图片并非全部来自手机上传,而且也只是适当减轻一些负载,但并不能解决问题)
  • 3、解决SDWebimage加载高分辨率大图的问题。

iOS解决SDWebimage加载高分辨率大图crash的问题。

之前看到很多解决问题的方法,比如

  • 1、每次加载图片清空内存的缓存

[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"];这个在这里没有什么效果,只是清除在加载图片开始的时候做清理,但是对于列表UITableview或者UICollectionView而言,瞬间发出N多个加载请求,主要负载其实还在请求之后。

不过这篇文章里提到了几种解决方法,虽然最后作者选择了当前方法,但是实际使用之后,效果并不好。

  • 2、修改SDWebimage源生图片处理方法

不过这篇文章提到的方法并没有实际验证,因为SDWebimage版本的问题,当前使用版本为pod 'SDWebImage', '~> 4.3.3'

  • 3、SDWebimage下载的options选项加入SDWebImageScaleDownLargeImages

对于少量的分辨率图片会有效果。但是对当前所要解决的大量(一屏显示30-40张)的高质量图片,依旧会因为内存激增而崩溃。

  • 4、配置SDWebimage参数,解决问题。

在APPDelegate中设置相关参数。

- (void)imageLoadingSettings {[SDImageCache sharedImageCache].config.maxCacheAge = 3600 * 24 * 7;[SDImageCache sharedImageCache].maxMemoryCost = 1024 * 1024 * 20;[SDImageCache sharedImageCache].config.shouldCacheImagesInMemory = NO;[SDImageCache sharedImageCache].config.shouldDecompressImages = NO;[SDWebImageDownloader sharedDownloader].shouldDecompressImages = NO;[SDImageCache sharedImageCache].config.diskCacheReadingOptions = NSDataReadingMappedIfSafe;
}

其次在加载方法的options中设置SDWebImageScaleDownLargeImages

[_billImageView sd_setImageWithURL:url placeholderImage:image options:SDWebImageRetryFailed|SDWebImageScaleDownLargeImages|SDWebImageRefreshCached];[[SDImageCache sharedImageCache] setValue:nil forKey:@"memCache"]; // tableView/collectionView加载更多的时候,会有一定的效果。

这里的options一定不能设置SDWebImageProgressiveDownload否则前面的设置并不会产生效果,导致崩溃。

这是一种极端的情况,一般加载大图,在手机上只需要一次加载少量的图片。如果是列表显示,一般会做图片的缩略处理。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部