内存管理深入研究
来源:互联网 发布:常熟淘宝客服招聘 编辑:程序博客网 时间:2024/06/05 18:34
每次做项目最后都被内存管理纠缠几天,而且我们做的又是最消耗内存的音视频项目,如果控制不好内存,小则内存暴增,大则程序崩溃,如果不除掉这块心头病,项目开发难以顺利的进行,时间也白白浪费了,在这里深入剖析一下。
a.NSObject
原则一:尽量不使用自动释放方法,能自己释放的就自己释放。
正确做法:
NSData *data = [[NSData alloc]initWithBytes:packet.data length:packet.size];
[videoArray addObject:data];
[data release];
错误做法:
[videoArray addObject:[NSData dataWithBytes:packet.data length:packet.size]];
b.c里面的内存释放
由于要使用ffmpeg解码视频,经常要和c里面的东西打交道,自然就少不了许多内存的释放,不过ffmpeg已经提供了很多方法让我们释放内存,重点是掌握这些函数,什么时候该使用他们
if (pFormatCtx) av_close_input_file(pFormatCtx);
c.当发生内存泄露了,如何检测?
1.Analyze一下
2.instruments
a.NSObject
原则一:尽量不使用自动释放方法,能自己释放的就自己释放。
正确做法:
NSData *data = [[NSData alloc]initWithBytes:packet.data length:packet.size];
[videoArray addObject:data];
[data release];
错误做法:
[videoArray addObject:[NSData dataWithBytes:packet.data length:packet.size]];
b.c里面的内存释放
由于要使用ffmpeg解码视频,经常要和c里面的东西打交道,自然就少不了许多内存的释放,不过ffmpeg已经提供了很多方法让我们释放内存,重点是掌握这些函数,什么时候该使用他们
if (pFormatCtx) av_close_input_file(pFormatCtx);
c.当发生内存泄露了,如何检测?
1.Analyze一下
2.instruments
3.还检测不出来,删代码,删到最简单,然后一步步退回去,这样肯定可以找到泄露的地方的。
“双语播放器”已在app store上架,欢迎大家前去下载(主要用于看电影,学英语,程序员一定要学好英语!)
这里是链接:
https://itunes.apple.com/cn/app/shuang-yu-bo-fang-qi-kan-dian/id950279764?mt=8
- 内存管理深入研究
- Block的深入研究之Block的内存管理
- Java 内存管理研究
- 深入JVM-内存管理
- 深入Linux内存管理
- 深入内存管理
- Java虚拟机的深入研究(内存管理---垃圾回收---JVM调优)
- Cocos2d-X内存管理研究
- Cocos2d-X内存管理研究
- Cocos2d-x内存管理研究
- 深入探索-JAVA内存管理
- 内存管理分配深入剖析
- 深入redis内部--内存管理
- 深入理解 Linux 内存管理
- 深入理解PHP内存管理
- Python深入:01内存管理
- 【java】内存管理深入理解
- ios内存管理深入解析
- 基于 WEB 的实时事件通知方式 服务器推送
- C#特性学习笔记
- log4j&commons.logging
- 基于µC/OS-II的时间片调度法设计
- 什么是非聚簇索引
- 内存管理深入研究
- ORA-01410: invalid ROWID问题解决
- Oracle SQL 优化笔记四
- auto_ptr 使用
- java解惑㈠——判断一个数是否为奇数
- SQLServer和Oracle的常用函数对比收集
- C语言字符串的比较和Switch
- httpclient小例子:获取手机号地址、IP地址获取、POST方式注册用户(乐蜂网)
- linux xargs详解