关于IOS内存泄漏

Posted

技术标签:

【中文标题】关于IOS内存泄漏【英文标题】:About memory leak in IOS 【发布时间】:2016-09-21 10:43:41 【问题描述】:

我正在使用SDWEBImage 从文档目录加载图像并在UICollectionView 上显示。

我说你“Received memory warning”一直在崩溃。因此,如果有人知道从文档目录加载图像的更好解决方案,请提供帮助。 谢谢。

这是我的内存使用和泄漏问题

要使用SDWebImage 加载图像,我使用以下代码

NSURL *imgURL = [NSURL fileURLWithPath:imagePath];
[cell.imgViewForCategory sd_setImageWithURL:imgURL placeholderImage:[UIImage imageNamed:@"testImage.jpg"] options:SDWebImageCacheMemoryOnly];

这里的imagePath 是我的图片的Document Directory 路径。

【问题讨论】:

您是如何从文档中加载图像的?你的代码怎么样? 请检查我更新的问题 你的图片有多大? 我的文档目录中存储了很多图像,可能有 500 个或更多,我正在从那里获取更多图像,每个图像的大小最大为 2 MB。 你有没有用for循环来获取它们一次? 【参考方案1】:

您最好使用 AutoReleasePool 以避免内存泄漏。

for (NSString *imageName in names) 
    @autoreleasepool 
        UIImage *image = [UIImage imageWithName:imageName];
    

【讨论】:

不,它不起作用,因为我在收藏视图中加载这些图像,同时滚动收藏它通过说“收到内存警告”而崩溃 ARC 已经处理自动释放,所以 @autoreleasepool 我想在这里没有任何影响,问题出在其他地方 @Tj3n 但是这个技巧可以根据apress.com/9781430241164避免内存峰值

以上是关于关于IOS内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

iOS 内存泄漏监测自动化

关于iOS8上使用UITextView内存泄漏的一个坑:-[UITextView textInputView]: message sent to deallocated instance

iOS内存泄漏检测方法

关于内存溢出和内存泄漏

翻译: 如何使用 Xcode 的内存图调试器检测 iOS 内存泄漏并保留周期

iOS:内存泄漏代码