使用VS2022 Performance Profiler进行Native内存分析

可可西 / 2024-10-07 / 原文

注:勾选Memory Usage进行Native内存抓取

 

不带pdb进行Native内存抓取

点击Start按钮开始进行内存分析

 

点击“Stop Collection”按钮,来结束Profile。

 

注:如果报如下错误:Failed to load memory usage view: System.NullReferenceException,需要将VS2022升级到最新使用VS2019

 

注1:Native Allocations为当前Native内存分配次数(不包含被释放的)

注2:Native Heap Size为当前的Native堆大小(不包含被释放的)

注3:点击橙色框的数字,则会打开Snapshot(快照) 1Snapshot(快照) 2diff数据

 

点击绿框数字,打开Snapshot(快照) 1的Native Memory数据

注:右上角Compare With Baseline下拉框中,可以选择其他的Snapshot(快照),来查看两个Snapshot(快照)之间的diff数据

 

点击Unresolved allocations,得到如下列表:

注:里面每一项都为一次Native内存分配

 

点击Stacks标签,以堆栈聚类的方式来查看Native内存分配

 

带pdb进行Native内存抓取

如果把pdb文件与exe文件放在一起,则Profile时会自动进行符号解析

 

重新运行Performance Profiler,抓取一个41.40s的Snapshot(快照),此时可以看到地址已经被解析成了符号

 

点击mytest1-win64-debug!FStatMessage,得到如下列表:

 

点击Stacks标签,以堆栈聚类的方式来查看Native内存分配

注1:点击Stacks标签页会执行归类操作,非常卡

注2:展开树节点不卡,但是选中某行时非常卡

 

参考

在不进行调试的情况下分析性能探查器中的内存使用情况(C#、Visual Basic、C++、F#)