SDWebImage疯狂的内存增长,高虚拟内存?高脏内存大小.视频附加

Bra*_*cal 2 memory memory-management lazy-loading objective-c ios

我正在开发一个内容丰富的应用程序问题.我正在使用SDWebImage缓存并将图像异步加载到我的UIImageViews和UIButtons(如果适用).在这个应用程序中,我有内容源,它是从服务器URL加载的3列宽图片的集合视图.

当我滚动时,内存会像疯了一样建立,但在需要时会自动清除SDWebImage的预期行为.但是,此应用程序是一个选项卡式应用程序,因此如果我部分滚动浏览一个源,切换选项卡并滚动另一个选项卡上的源 - 内存只是构建并且不会被清除.

我知道的第一个问题是图像尺寸非常大并且在应用程序内缩小,而不是以100x100 PX的正确尺寸下载,而是640x640像素.这显然是固定的,因为每个图像需要多个尺寸用于整个应用程序中的各种显示,这将降低VM的增长速度,但我不相信它将解决内存的最终问题.在浏览不同页面时崩溃应用程序的重点.

我注意到像Wanelo和Path和Facebook这样的应用程序都有无限的内容,包含大量的内容,可以无限制地滚动和加载,而不会有任何明显的崩溃性能损失,他们是如何做到这一点的?

我还添加了一个视频,其中注释了我使用乐器中的分配模板来分析我的应用程序.我可以读取信息确定,但是我不确定是否有一些我缺少的东西,就分配/调用堆栈等来说,这可能会让我朝着正确的方向解决这个问题.

分析视频可在此处获取:http://youtu.be/J4zici41TMs

Shu*_*ndu 5

如果您看到SDWebImage是异步加载图像的最优化方式.你说你正在开发基于标签的应用程序,在某些时候你的应用程序崩溃了.

基本上SDwebImage下载图像并将它们保存在高速缓冲存储器中(以加速)并在本地保存图像.无论何时从一个选项卡移动到另一个选项卡,都可以强制清除缓存.这可能对你有所帮助.

如果您切换到其他选项卡,请尝试以下代码.

[[[SDWebImageManager sharedManager] imageCache] clearMemory];
Run Code Online (Sandbox Code Playgroud)

另外,为了了解其他缓存apis,您可以查看此信息.我总是喜欢SDWebImage,因为它非常好而且快速.链接.

希望这会帮助你.快乐编码:)