使用VS2022 Performance Profiler进行Native内存分析
注:勾选Memory Usage进行Native内存抓取
Memory Profiler Settings
不带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(快照) 1与Snapshot(快照) 2的diff数据
点击绿框数字,打开Snapshot(快照) 1的Native Memory数据
注1:Unresolved allocations为数据类型未确定的未分类分配(一般是没有符号表导致的)
注2:右上角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标签页会执行归类操作,非常卡 -- vs2019不卡
注2:展开树节点不卡,但是选中某行时非常卡 -- vs2019不卡
VS2019
点击View Heap Contents得到:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)