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区查了下,确实有几个人提问了,但是每人给出解决方案。
946 0
|
2月前
|
存储
阿里云轻量应用服务器收费标准价格表:200Mbps带宽、CPU内存及存储配置详解
阿里云香港轻量应用服务器,200Mbps带宽,免备案,支持多IP及国际线路,月租25元起,年付享8.5折优惠,适用于网站、应用等多种场景。
629 0
|
2月前
|
存储 缓存 NoSQL
内存管理基础:数据结构的存储方式
数据结构在内存中的存储方式主要包括连续存储、链式存储、索引存储和散列存储。连续存储如数组,数据元素按顺序连续存放,访问速度快但扩展性差;链式存储如链表,通过指针连接分散的节点,便于插入删除但访问效率低;索引存储通过索引表提高查找效率,常用于数据库系统;散列存储如哈希表,通过哈希函数实现快速存取,但需处理冲突。不同场景下应根据访问模式、数据规模和操作频率选择合适的存储结构,甚至结合多种方式以达到最优性能。掌握这些存储机制是构建高效程序和理解高级数据结构的基础。
201 1
|
2月前
|
存储 弹性计算 固态存储
阿里云服务器配置费用整理,支持一万人CPU内存、公网带宽和存储IO性能全解析
要支撑1万人在线流量,需选择阿里云企业级ECS服务器,如通用型g系列、高主频型hf系列或通用算力型u1实例,配置如16核64G及以上,搭配高带宽与SSD/ESSD云盘,费用约数千元每月。
186 0
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
802 0
|
11月前
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
11月前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
767 1
|
11月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
430 1
|
11月前
|
存储 编译器
数据在内存中的存储
数据在内存中的存储
115 4

热门文章

最新文章