Leaks 工具是一个跟踪全部由应用程序分配的内存工具,能够用来识别在应用程序里面的内存分配模式,并识别应用程序内存效率低下的地方。这是为了应用程序可以消除 内存泄露,进一步提升程序的可靠性,对于设计为长时间运行的程序尤其正确。(最新版本autorelease不会被断定为内存泄露) app
Leaks Trace Template 用来测试内存使用、检查内存泄露、提供类的对象内存分配和泄露的内存的统计。它由Allocations和Leaks组成。 函数
用Leaks工具能够发现App再也不有引用指向的内存。Leaks工具提供这些内存块的报告。大部分这些内存泄露都是用类的名字来标识的,另外可能会用分配内存的大小标识。 工具
注意:若是泄露的不是一个对象,那么多是你的API调用的时候分配了一块内存可是忘记了去释放。 开发工具
若是泄露的内存是一个Object-C对象,点击选中的对象旁边的箭头,每一个单独的地址将会显示每一个对象retain/release的历史记录,对每个事件都有堆栈跟踪。 测试
引发非对象内存泄露的缘由是内存的分配和释放没有保持一致,所以只能显示每一个事件的堆栈跟踪。 spa
跟踪视图的内存泄露集合了全部的内存泄露块的位置——代码中的一个错误可能致使重复执行的这段的代码的调用产生多个运行时的内存泄露。 设计
打 开Xcode查看每一个每个产生内存泄露的代码时,内存泄露尚未被清除。Leaks工具的Detail窗口中的Cycles&Roots容许你 去查看调用循环。用ARC的时候Cycles&Roots视图是很是重要的。它能够用更高级的视图方式显示循环引用。一般的解决这些问题的关键是 就是把引用改成弱引用。 code
注意:若是另外一部分代码依然依赖这个消除的Bug或者这个Bug没有修改正确,那么你的App依然不稳定。 对象
选中Memory(蓝色线框区域) 事件
@1.Memory Use: 彩虹圈的8G是本机的内存,其中18.7M为IOS Simulator所占用的内存(这里的占用数据只能做为参考,实际真机占用内存可能会比这个数据要小)。
@2.Usage Comparison : 这里是本机内存的使用状况,其实TestForApp为IOS Simulator所占内存。
@3.Memory:
Duration:为IOS Simulator 运行app的实际时间;
High: 使用内存最多时的内存数量;
Low: 使用内存最低时的内存数量;
这里会弹出一个对话框。
@1Restart: (从新运行项目)
@2Transfer:(将当前运行项目直接放入Instruments进行分析)
@1.Allocations: 分配的内存(被选中,区域3显示即为Allocations)
@2.Leaks: 有内存泄露的内存
@3.Details: 具体的分配和泄露内存的分析(选择Call Tree选项能够查看)
@4.Settings: 详细的设置(选择Allocations 和 Leaks设置选项不一样) ,如下为Allocations的Settings
Allocations Lifespan: Allocations (全部分配的内存)
Created & Persistent (仍存在的)
Created & Destroyed (销毁的)
Allocations Type: All Heap & Anonymous VM(堆内存和虚拟机上分配的内存)
All Heap Allocations (堆内存)
All VM Regions (虚拟机上分配的内存)
双击main函数
@1:红色区域有内存泄露55.33KB
@2: 绿色区域直接将arrString = nil; 项目没有使用ARC,arrString alloc后没有release,形成内存泄露。
@1: 红色区域修改代码,从新编译;
@2: 成功运行App后再也不有内存泄露。
@1:选中Allocations
@2:选中2中的Call Tree,查看分配的内存详情。
查看Allocations方式与查看Leaks的方式基本相同
@1:点击退出键,若是有运行过的项目,则会弹出保存对话框;没有运行过项目则直接退出
@2 : 保存选项
@1: 打开Xcode->Open Develop Tool ->Instruments
@1:下拉能够选择全部的Instruments。
@1: 双击Leaks,显示以下界面