观看2018 wwdc中的iOS Memory Deep Dive视频做的一些笔记.
1、查看虚拟内存区域分配:vmmap
如:
1)、列出对象占用虚拟内存大小
vmmap --summary App.memgraph
DiRTY SIZE + SWAPPED SIZE = 真实虚拟内存大小
2)、列出具体的地址区间
vmmap App.memgraph
3)、查看虚拟内存中的CG image的信息
vmmap --verbose PlanetPics.memgraph
| grep "CG image"2、检查泄漏:leaks
1)、查看内存泄漏情况
leaks App.memgraph
如:leaks retain_cycle.memgrahp
2)、查看0x000000014b9b400地址泄漏的调用数信息
leaks --traceTree 0x000000014b9b400 PlanetPics.memgraph
3、堆内存:heap
1)、查看堆内存的情况
heap App.memgraph
如:heap PlacetPics.memgraph
2)、将堆内存按照从大到小进行排序
heap App.memgraph -sortBySize
如:
heap -sortBySize PlanetPics.memgraph
3)、查看对象的地址情况
heap App.memgraph -addresses all | <classes-pattern>
如:
查看NSConcreteData对象的堆内存的使用情况
heap -addresses NSConcreteData PlacnetPics.memgraph
4、分配栈记录:malloc_history
在使用命令之前必须在xocde中开启Malloc Stack,如图七所示
命令: malloc_history App.memgraph [address]
如:
1)、查看地址0x1016e6ff0堆内存的调用结构
malloc_history -callTree PlanetPics.memgraph 0x1016e6ff0
2)、查看地址0x000000014b9b4000调用栈信息
malloc_history PlanetPics.memgraph --fullStacks 0x000000014b9b4000
3)、查看地址0x00000001439b4000 地址调用栈信息
malloc_history PlanetPics.memgraph --fullStacks 0x00000001439b4000
参考地址:
[1] : https://developer.apple.com/videos/play/wwdc2018/416/#