1,为什么要测试代码的内存泄露
内存的泄露导致我们软件在运行过程中占用越来越多的内存,占有资源却又得不到及时清理,会导致我们程序效率越来越低,反应慢,会影响我们用户体验,失去市场的竞争能力
2,怎样使用工具测试内存泄露
首先使用到的Instrument工具Leaks
1,运行一段正确的无bug的demo,运行该段代码,
2,打开xcode中的instrument ,打开方式:
选择product -> profile 即可
通过Xcode来启动Instruments(启动前必须停止你当前的执行文件)
选择第一种启动方式,build成功后跳出Instruments工具,选择Leaks选项,工具显示效果如下,解释一下,为什么选择leaks模板,但是默认情况下还是会添加Allocations模板,
点击红色按钮,开始运行,(这里运行了一分钟直到出现内存泄露方可停止)如图所示
通过观察,可以看出红色的柱子表示内存泄露 ,如上图所示,选择leak,点击十字交叉,选择call Tree
选择Call Tree后,右下角勾选住 Invert Call Tree(倒置call tree),Hide System Libraries(隐藏系统工具)
这时候内存泄露的具体代码找到了,在右边的红色框框里指定了哪个方法出现了内存泄露。
你只要在这些方法上双击,就会跳转到具体的代码,方便程序员调试
以此选择leak,点击十字交叉,选择Cycles&roots 如图可以可以看到内存泄露地址:
点击箭头,查看结果,联系开发人员分析结果
Leaks instrument工具检查进程堆泄露的内存。你可以使用该instrument工具配合Allocations instrument工具来获取内存地址的历史记录。该instrument工具要求你加载一个进程以便它可以从进程启动时收集数据。
该instrument工具捕获以下信息:
z内存泄露的数量(The number of leaks)
z每个泄露内存块的大小(The size of each leak)
z泄露内存块的地址(Address of the leaked block)z泄露对象的类型(Type of the
leadked object)
详细面板的每个视图模式以轻微不同的函数显示泄露的数据。在列表模式下,该instrument工具显示每个泄露的百分比,而每个内存泄露有助于发现内存泄露的总数。在大纲模式下,数据被重组以便你可以查看给定的符号有多少内存泄露。对于任何模式的条目,在扩展详细面板显示内存泄露引发的深入栈跟踪信息。
Egt��^��Ҩ
网友评论