美文网首页
IOS Instruments一些工具的使用

IOS Instruments一些工具的使用

作者: Johnny_Wu | 来源:发表于2018-05-30 10:50 被阅读0次

    搞了大半天,按网上的步骤来操作了,但最后总是找不到内存泄漏的代码,最后发现是xcode的某个配置错了,呵呵!

    在选择calltree后,可能你会发现查看不到源码从而无法定位内存泄漏的位置,只是显示16进制的数据。此时需要你在Xcode中检查是否有dSYMFile生成,如下图所示选择第二项DWARF with dSYM File.

    这样配置好了之后,就可以定位代码了。

    下面是简单介绍下以下的工具:TimerProfiler,Allocations和Leaks

    一、 Leaks

    用于检测内存泄漏。我测试了下,发现像循环运用,循环Timer不释放,这些如果重复操作,都会到导致内存增长,并且没有机会释放。但Leaks检测不到。

    比如说:我在一个controller中执行

    timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timeOpt) userInfo:nil repeats:YES];

    创建一个循环的timer,并且返回的时候,没有主动释放timer,那么这个controller是不会被释放的,不断进入返回controller就会导致内存增长,但检测不出来,可能系统认为这不是内存泄漏,只是没释放。

    //内存泄漏

    char *str = (char *)malloc(10);

    strcpy(str, "sdfdf");

    这个内存泄漏可检测到:

    配置如切图,选择CallTree,可看到发生内存泄漏的方法,上图选中标记处。如何双击此处就可以定位到代码了: 使用起来很方便。

    二、Allocations

    程序内存分布,可以看到每部分占用多少内存。

    可以看到每部分占用多少内存,上面可看到我的[ViewController btnAction]方法里面占用内存比较大,就点进去看看咯:

    原来是获取图片,确实占用比较多内存!!

    三、Timer Profiler

    这个工具我还是比较喜欢的,可以帮我们查找占用时间比较多的代码,对代码的优化有很大的帮助,用法其实也是差不多,我直接截图,你一看就懂了:

    可以清楚看到每部分的时间,占的比例。点btnAction方法看看:

    相关文章

      网友评论

          本文标题:IOS Instruments一些工具的使用

          本文链接:https://www.haomeiwen.com/subject/hgrtsftx.html