SDWebImage在加载大图时导致内存一直增加问题记录.

2017-09-06  本文已影响0人  羽辉

在collectionView中加载大量图片,上拉加载,内存一直飙升...第一反应是重用问题,可是仔细想来,collectionView不是tableview,重用应该不是问题.
最后检查代码也发现不是重用的锅,没办法只能leak了...
然后就发现了这幅图...

屏幕快照 2017-09-06 17.17.37.png

简直可怕...
百度一发,发现是个挺常见的问题,但是回答都比较老,有直接改SD源文件的,也有一些比较老的方法,看一眼时间就没有尝试- -...

不扯了,解决方法...
我找到了2种:
方法一:
简单粗暴,直接使用AFNetworking的网络图片加载...
试了试还不错,没有内存飙升,也没发现什么其他的bug效果不错.

方法二:
碰到问题不解决了总是浑身难受,那么直面问题吧~
发现主要是
image = [UIImage decodedImageWithImage:image]
这个方法的锅.
http://blog.csdn.net/guojiezhi/article/details/52033796
这篇文章解释的很好,也有解决方法,就是可能版本比较老. 这里谢谢大神解惑,转一个.

然后解决方法:
其实SD的作者也有说明:


屏幕快照 2017-09-06 17.25.34.png

所以解决方案就出炉了:
[SDImageCache sharedImageCache].config.shouldDecompressImages = NO;
[SDWebImageDownloader sharedDownloader].shouldDecompressImages = NO;
要注意,这些都是单例...哪里用写哪里,如果不想影响其他图片加载,最好再改变回默认值,也就是都YES就行了.

PS: 以上两种方案只是针对高清图片展示时的内存飙升,对于加载大量图片导致内存持续升高...暂时只有定期清理SD的缓存了...有大触知道方法求告知...

上一篇下一篇

猜你喜欢

热点阅读