Debug Memory Graph 命令

觀看2018 wwdc中的iOS Memory Deep Dive視頻做的一些筆記.

1、查看虛擬內(nèi)存區(qū)域分配:vmmap

如:
1)、列出對象占用虛擬內(nèi)存大小
vmmap --summary App.memgraph

圖1.1 列出對象占用虛擬內(nèi)存大小截圖

DiRTY SIZE + SWAPPED SIZE = 真實虛擬內(nèi)存大小
2)、列出具體的地址區(qū)間
vmmap App.memgraph
圖1.2 具體的地址區(qū)間截圖

3)、查看虛擬內(nèi)存中的CG image的信息
vmmap --verbose PlanetPics.memgraph | grep "CG image"
圖1.3 虛擬內(nèi)存中的CG image的信息截圖

2、檢查泄漏:leaks

1)、查看內(nèi)存泄漏情況
leaks App.memgraph
如:leaks retain_cycle.memgrahp

2.1 內(nèi)存泄漏命令截圖

2)、查看0x000000014b9b400地址泄漏的調(diào)用數(shù)信息
leaks --traceTree 0x000000014b9b400 PlanetPics.memgraph
2.2 內(nèi)存泄漏調(diào)用棧截圖

3、堆內(nèi)存:heap

1)、查看堆內(nèi)存的情況
heap App.memgraph
如:heap PlacetPics.memgraph

3.1 查看堆內(nèi)存的情況截圖

2)、將堆內(nèi)存按照從大到小進行排序
heap App.memgraph -sortBySize
如:
heap -sortBySize PlanetPics.memgraph

3.2 將堆內(nèi)存按照從大到小進行排序截圖

3)、查看對象的地址情況
heap App.memgraph -addresses all | <classes-pattern>
如:
查看NSConcreteData對象的堆內(nèi)存的使用情況
heap -addresses NSConcreteData PlacnetPics.memgraph

3.3 查看NSConcreteData對象的堆內(nèi)存的使用情況截圖

4、分配棧記錄:malloc_history

在使用命令之前必須在xocde中開啟Malloc Stack,如圖七所示

3.1 開啟棧記錄

命令: malloc_history App.memgraph [address]
如:
1)、查看地址0x1016e6ff0堆內(nèi)存的調(diào)用結(jié)構(gòu)
malloc_history -callTree PlanetPics.memgraph 0x1016e6ff0
3.2 0x1016e6ff0調(diào)用棧信息截圖

2)、查看地址0x000000014b9b4000調(diào)用棧信息
malloc_history PlanetPics.memgraph --fullStacks 0x000000014b9b4000
3.3 查看地址0x000000014b9b4000調(diào)用棧信息截圖

3)、查看地址0x00000001439b4000 地址調(diào)用棧信息
malloc_history PlanetPics.memgraph --fullStacks 0x00000001439b4000
3.4 查看地址0x00000001439b4000 地址調(diào)用棧信息

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。