在 VS Code 中用 SharpLsp 分析 C# 应用:热点行的 CPU 热度、最热的函数,以及发现并修复一个泄漏的静态字典
文字稿
这是 Storefront,一个正在运行的 C# 应用。SharpLsp 无需重启即可附加到它上面,采样它的时间都花在了哪里。
停止性能分析器,编辑器里每个热点行都会亮起:商品目录解析、折扣循环,还有一个字符串一个字符串拼出来的发票。
结果列出了最热的函数和最热的代码行,让你清楚地知道该从哪里下手。
现在跟踪同一个应用的内存。SharpLsp 每十秒为堆拍一次快照。
可疑项按持续增长程度排序。CustomerSession 在每个快照里都在增长,它持有的字节数组也一样。点击它,就会跳到它的代码。
那么,是什么让这些会话一直存活?
图中标出的一个静态字典,保存着应用见过的每一个会话。
修复方法:只保留最近一千笔订单,其余的淘汰。
重新构建,再次运行,然后跟踪内存。
这一次,堆保持平稳。这就是适用于 C# 和 F# 的 SharpLsp 性能分析器。免费,而且开源。