afnetworking 内存泄漏问题

简介: afnetworking 内存泄漏问题

最近在写小项目的过程中发现app在运行过程中内存总是会增加,没有上限一样到五六十兆。然后本能的打开xcode的product--profile--leak 监测一下内存泄漏的地方。结果发生一堆内存泄漏,不过都是当我获取网络数据的时候。


2466108-632a26f050a4be5a.webp.jpg


2466108-205f4934c789305f.webp.jpg


点击leaks--calltree ,勾选右边设置的Invert Call Tree和Hide System Libraries 查看内存泄漏的位置 。


2466108-38d6d8d62bf8b489.webp.jpg


可以看到如下


2466108-0be4e98ba3380907.webp.jpg


可以看出内存泄漏全是和AFNetWorking 有关 ,原因是manager类每一次网络请求都是初始化一个实例对象,但是该对象在工程中得不到释放,造成了内存泄漏。我也不知道AFNetWorking的作者是怎么想的。解决方法是创建一个继承与AFHTTPSessionManager 的单例对象,每次网络请求都调用这个单例方法。


代码很简单 ,作为新手要记录每个错误。加油。

AFmanager.h中


import "AFHTTPSessionManager.h"



@interface AFmanager :AFHTTPSessionManager

+(AFHTTPSessionManager *)shareManager;

@end

AFmanager.m中

+(AFHTTPSessionManager *)shareManager {

staticAFHTTPSessionManager *manager=nil;

staticdispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

manager = [AFHTTPSessionManagermanager];

//        manager.requestSerializer = [AFJSONRequestSerializer serializer];

//        manager.responseSerializer = [AFJSONResponseSerializer serializer];

});


return manager;


}

(将AFmanager.h 头文件写在pch文件中)在网络请求调用的地方

AFHTTPSessionManager *manager = [AFmanagermanager];

完成后,一切搞定。又少了一个坑。


2466108-d874360c5eb1b189.webp.jpg

目录
相关文章
使用AFNetworking 3 内存泄露(转载)
原文地址:http://blog.csdn.net/d1w2hj/article/details/51793065 在使用instruments做内存泄漏分析时,发现所有使用如下语句的地方都有内存泄漏,OMG: if(!_manager){ _manager = [AFHTTPSessionManager manager]; } stack overflow上查了下并没有找到好的解决方案,去github的AFN的issue区查了下,确实有几个人提问了,但是每人给出解决方案。
899 0
|
4月前
|
存储 分布式计算 Hadoop
HadoopCPU、内存、存储限制
【7月更文挑战第13天】
279 14
|
3月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
370 0
|
22天前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
46 1
|
27天前
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
1月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
1月前
|
存储 编译器
数据在内存中的存储
数据在内存中的存储
41 4
|
1月前
|
存储 Java
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
这篇文章详细地介绍了Java对象的创建过程、内存布局、对象头的MarkWord、对象的定位方式以及对象的分配策略,并深入探讨了happens-before原则以确保多线程环境下的正确同步。
53 0
JVM知识体系学习四:排序规范(happens-before原则)、对象创建过程、对象的内存中存储布局、对象的大小、对象头内容、对象如何定位、对象如何分配
|
1月前
|
存储 机器学习/深度学习 人工智能
数据在内存中的存储
数据在内存中的存储
|
1月前
|
存储 C语言
深入C语言内存:数据在内存中的存储
深入C语言内存:数据在内存中的存储