查找ios内存泄露、内存过大消耗

以前就一直遇到过内存泄露、内存消耗过大的问题,之前解决了但是一直没有把自己的处理方式跟走过的一些坑列出来,今天就在这里把坑整下。

1、查找泄漏点 (两种工具)

在 Xcode 自带了两种内存泄露查询工具:

1 > Analyze

- 学 名:  静态分析工具- 查 找:  可以通过 Product ->Analyze 菜单项启动- 快捷键:  CMD+shift +b.- Analyze主要分析以下四种问题:


根据这个图标来查看内存泄露疑点


1) 逻辑错误:访问空指针或未初始化的变量等;

2) 内存管理错误:如内存泄漏等;

3) 声明错误:从未使用过的变量;

4) Api调用错误:未包含使用的库和框架。

2 >Instruments

- 学 名:  动态分析工具- 查 找:  Product ->Profile 菜单项启动- 快捷键:  CMD + i.- 简 介:它有很多跟踪模块可以动态分析和跟踪内存, CPU 和文件系统.

查找ios内存泄露、内存过大消耗_第1张图片

界面的介绍

在 instruments 中,虽然选择了 Leaks 模板,但默认情况下也会添加 Allocations 模板.基本上凡是内存分析都会使用 Allocations 模板, 它可以监控内存分布情况。

① 选中 Allocations 模板,(图1区域),右边的3区域会显示随着时间的变化内存使用的折线图,同时在4区域会显示内存使用的详细信息,以及对象分配情况.

② 点击 Leaks 模板(图中2区域), 可以查看内存泄露情况。如果在3区域有 红X 出现, 则有内存泄露, 4区域则会显示泄露的对象.

3) 打用leaks进行监测:

点击泄露对象可以在(下图)看到它们的内存地址, 占用字节, 所属框架和响应方法等信息.打开扩展视图, 可以看到右边的跟踪堆栈信息

查找ios内存泄露、内存过大消耗_第2张图片

leaks进行监测

4) 监测结果的分析:



查找ios内存泄露、内存过大消耗_第3张图片
勾选Call Tree可以将其他的信息过滤直接看到我们代码中内存泄露的部分

这是关于查询内存泄露的部分的操作。至于怎么查看内存消耗过多的部分其实是跟leaks的使用是类似的。

同样在instrument面板上选中Allocations

查找ios内存泄露、内存过大消耗_第4张图片
xcode8新图标

具体的操作跟leaks的操作类似,大致的可以得出具体是哪个地方内存消耗过大,其次还有xcode8新出的debugMemoryGraph对内存调试也很有帮助,再这里就不一一描述了。

你可能感兴趣的:(查找ios内存泄露、内存过大消耗)