上位机软件在客户现场隔一段时间说操作了没反应,但是上位机又没死,出现了一些奇怪现象:
- 左上角的时间不走了(本来是1s运行一次)
- 使用任务管理器查看,内存占用1.5G,线程有3000多个,正常情况下,线程应该是400个左右,内存500M以内(带的设备比较多)。
本次分析更关心的是线程泄露,为啥会出现一直线程增加的情况
解决方法:
1.手动快照内存Dump文件
2.直接使用VS2022分析Dump文件
选择已经存储的dmp文件,它会联网加载符号
点击右上方的运行分析诊断
:
再点击分析
按钮
下方出现了一些分析。然后逐个单击查看详情。
从这里大概能发现一些蛛丝马迹,说明是哪个函数出现问题。
最终分析的大概原因是,在线程中大量使用异步代码。后续会把代码贴出来。