Ios SDWebImage疯狂的内存增长,高虚拟内存?高脏内存大小。视频附件

Ios SDWebImage疯狂的内存增长,高虚拟内存?高脏内存大小。视频附件,ios,objective-c,memory,memory-management,lazy-loading,Ios,Objective C,Memory,Memory Management,Lazy Loading,我正在开发一个内容非常丰富的应用程序,但遇到了一些问题。我正在使用SDWebImage缓存图像,并将其异步加载到UIImageView和UIButtons(如果适用)。在这个应用程序中,我有内容提要,它是从服务器URL加载的3列宽图片的集合视图 当我滚动时,内存会疯狂地积累,但在需要时会自动清除,这是SDWebImage的预期行为。然而,这个应用程序是一个选项卡式应用程序,所以如果我滚动浏览一个提要的一部分,切换选项卡并滚动浏览另一个选项卡上的提要-内存只会生成,不会被清除 我所知道的第一个问题

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

当我滚动时,内存会疯狂地积累,但在需要时会自动清除,这是SDWebImage的预期行为。然而,这个应用程序是一个选项卡式应用程序,所以如果我滚动浏览一个提要的一部分,切换选项卡并滚动浏览另一个选项卡上的提要-内存只会生成,不会被清除

我所知道的第一个问题是,图像大小非常大,在应用程序中被缩小,而不是下载到正确大小的100x100像素,而是640x640像素。这显然是要解决的,因为整个应用程序中的每个图像都需要多种尺寸的显示器,这会降低虚拟机的增长速度,但我不相信这会解决内存的根本问题,最终导致在不同页面中导航时应用程序崩溃

我注意到像Wanelo、Path和Facebook这样的应用程序都有无限量的feed,其中包含大量的内容,可以无限期滚动和加载,而不会造成任何明显的崩溃性能损失,它们是如何做到的

我还包括了一个视频,其中有我在instruments中使用分配模板评测我的应用程序的注释。我可以阅读这些信息,但我不确定在分配/调用堆栈/etc方面是否有遗漏的东西可能会引导我朝着正确的方向解决这个问题


此处提供的评测视频:

如果您看到SDWebImage是异步加载图像的最佳方式。你说你正在使用基于标签的应用程序,但在某个时候你的应用程序崩溃了

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

当您切换到其他选项卡时,请尝试以下代码

[[[SDWebImageManager sharedManager] imageCache] clearMemory];
另外,为了了解其他缓存API,您可以检查以下内容。我总是更喜欢SDWebImage,因为它真的很好而且很快


希望这对你有帮助。快乐编码:)

我几个月前用过这个库。但由于某些原因,它没有加载所有图像或随机加载。所以我决定使用NSOperation。第一个建议是,删除SDWebImage,再也不要使用它。当你摆脱所有的机械装置时,你真的不难自己滚动这样的东西。我在使用这个库进行维护的应用程序中遇到了相当多的问题,它不值得实现。无限滚动并不难。它只是一个具有良好的服务器响应时间、良好的缓存和清除缓存策略的请求。。。基本上就是这样。您可能想更多地了解核心数据,有趣的是,在了解滚动性能之后呢?除了SDWebImage的所有小怪癖之外,使用FastImageCache是否更好?