美文网首页
Debug Memory Graph 命令

Debug Memory Graph 命令

作者: 前年的邂逅_Jerry | 来源:发表于2019-08-14 19:28 被阅读0次

观看2018 wwdc中的iOS Memory Deep Dive视频做的一些笔记.

1、查看虚拟内存区域分配:vmmap

如:
1)、列出对象占用虚拟内存大小
vmmap --summary App.memgraph

图1.1 列出对象占用虚拟内存大小截图
DiRTY SIZE + SWAPPED SIZE = 真实虚拟内存大小
2)、列出具体的地址区间
vmmap App.memgraph
图1.2 具体的地址区间截图
3)、查看虚拟内存中的CG image的信息
vmmap --verbose PlanetPics.memgraph | grep "CG image"
图1.3 虚拟内存中的CG image的信息截图

2、检查泄漏:leaks

1)、查看内存泄漏情况
leaks App.memgraph
如:leaks retain_cycle.memgrahp

2.1 内存泄漏命令截图
2)、查看0x000000014b9b400地址泄漏的调用数信息
leaks --traceTree 0x000000014b9b400 PlanetPics.memgraph
2.2 内存泄漏调用栈截图

3、堆内存:heap

1)、查看堆内存的情况
heap App.memgraph
如:heap PlacetPics.memgraph

3.1 查看堆内存的情况截图

2)、将堆内存按照从大到小进行排序
heap App.memgraph -sortBySize
如:
heap -sortBySize PlanetPics.memgraph

3.2 将堆内存按照从大到小进行排序截图

3)、查看对象的地址情况
heap App.memgraph -addresses all | <classes-pattern>
如:
查看NSConcreteData对象的堆内存的使用情况
heap -addresses NSConcreteData PlacnetPics.memgraph

3.3 查看NSConcreteData对象的堆内存的使用情况截图

4、分配栈记录:malloc_history

在使用命令之前必须在xocde中开启Malloc Stack,如图七所示

3.1 开启栈记录
命令: malloc_history App.memgraph [address]
如:
1)、查看地址0x1016e6ff0堆内存的调用结构
malloc_history -callTree PlanetPics.memgraph 0x1016e6ff0
3.2 0x1016e6ff0调用栈信息截图
2)、查看地址0x000000014b9b4000调用栈信息
malloc_history PlanetPics.memgraph --fullStacks 0x000000014b9b4000
3.3 查看地址0x000000014b9b4000调用栈信息截图
3)、查看地址0x00000001439b4000 地址调用栈信息
malloc_history PlanetPics.memgraph --fullStacks 0x00000001439b4000
3.4 查看地址0x00000001439b4000 地址调用栈信息

参考地址:
[1] : https://developer.apple.com/videos/play/wwdc2018/416/#

相关文章

网友评论

      本文标题:Debug Memory Graph 命令

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