iOS 内存泄露查找

来源:互联网 发布:qt淘宝互刷平台2017 编辑:程序博客网 时间:2024/04/29 10:48

在做音视频涉及到多线程就容易引起内存泄露问题。这里记录一下内存泄露定位方法。
1. 查看静态代码:
打开项目:product ->Analyze 可以看到:
这里写图片描述
这些静态的引起的问题不严重,下面的在多线程中的内存泄露问题比较严重,会随着程序运行内存增加很快。
2.运行过程中造成的内存泄露:
设置xcode:Build Settings->Build Options->Debug Information Format
选择 :DWARF with dSYM File
然后选择:Product->Profile
弹出的Choose a profiling template for对话框,选择Leaks
运行:

这里写图片描述
可以看到,前20秒钟没有进行音视频播放,没有启动线程,内存检测是绿色表示正常,20秒后启动音视频播放线程就产生内存泄露了。左下方区域是每次循环分配泄露的内存详情,右下区域Stack Trace里面列出了泄露的代码位置,点击进来:
这里写图片描述
可以看到直接定位到泄露位置了,包括每次运行泄露的大小。我这里用的动态库分配的内存,需要用动态库进行内存释放就行了。具体问题具体解决。
比如我这里用:AVPacket *pkt = av_packet_alloc();
这个方法分配内存,则要用:av_packet_unref(pkt);进行释放。
这种方式查找内存泄露也不是万能的,有时候也会定位不准确,这种方式只能作为一种辅助查找方法。