上篇文章说过Leaks,官方解释为:一般的措施内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录。用大白话来说,就是调查程序内存泄露的具体内容,比如泄露的内存地址、哪段代码内存泄露,泄露的内存大小......
说一下实际的操作吧,运行instrument,选择Leaks模板,选择好要运行的设备以及要运行的程序(具体操作看上篇文章,这里就不重复说明了),当程序运行起来后,按“正常流程”去操作这个程序,操作一定时间后,查看运行的结果吧,(具体需要操作多久才能查看运行的结果,需要根据程序的大小、复杂度......自己去判断),废话不多说了,我们看Leaks的操作流程吧。
如图所示,Leaks的图形运行的结果中一条红色的竖线,表示就有一处内存泄露(如果没有,那就代表你们的程序没有内存泄露),从下面的运行结果中,可以看到泄露的原因在主函数main上。
依次打开主函数main,一直显示最后开辟内存的事件
点击打开最后开辟内存的那段事件(打开后的内容还没看懂,正在学习中)
当然也可以在开始的main直接打开,直接显示调用main函数的代码
点击上图“! 2 Bytes”中的灰色感叹号,会显示内容泄露的原因(表示再次看不懂)
可能有些人想问,我可以查看具体泄露的内存地址吗?答案是当然可以了,点击“Call Tree”,选择“Cycles & Roots”
你就能看到具体泄露的内存地址了
这就是我对Leaks的学习与认知,再次申明一下,本系列文章只是表达自己对于instrument的见解,如有什么不对的地方,欢迎大家多多指点。