IOS开发中的小知识点整理iOS 解决方案

Xcode Debug Memory Graph - 内存调试利

2017-11-28  本文已影响399人  Ever_Blacks

Xcode 8 引入了一个新的特性 Debug Memory Graph, 终于结束了内存无限增长却只能摸瞎找问题的时代。

内存泄露的原因

我们大部分的内存泄露都是由于 block 的循环引用,使用 ReactiveCocoa 之后这个问题更甚,所以能准确定位到出现问题的位置非常重要。

使用 Debug Memory Graph

配置

image.png

如果没有勾选 Malloc Stack 在调试的时候,在右侧是看不到调用的堆栈信息。
ps: 1. 勾选 Malloc Stack 之后内存会相应的增高,如果不调试可以关闭该选项
2. 建议选择 Live Allocations Only 如果选择 All Allocations and Free History 会出现一些额外的影响因素

打开方式

image.png
or
Debugger Navigator -> View Memory Graph Hierarchy
image.png

分析内存泄露

image.png

如上图示,括号中的数字代表该类在内存中实例的数量。点击箭头所指的感叹好小图标,会显示出内存泄露的类。如果没有也不要高兴的太早,括号中数字比较大类,可能是本该释放却没有释放的类。如 A 类页面进入到B 类页面,返回之后查看内存图谱, 如果 B 类依旧在列表中,就需要具体分析是否 B 类中内存泄露无法释放,下图为点击该类的堆栈信息。


image.png

参考链接:
iOS — Identifying Memory Leaks using the Xcode Memory Graph Debugger

上一篇 下一篇

猜你喜欢

热点阅读