屏幕录像:在 VS Code 中用 SharpLsp 内存分析器修复 C# 内存泄漏,从可疑泄漏到保留图,再到验证修复
文字稿
这是 Storefront,一个内存不断上涨的 C# 应用。直接在 VS Code 里对它的进程开启内存跟踪。
SharpLsp 每十秒为堆拍一次快照,而堆一直在增长。
可疑泄漏按持续增长程度排序。CustomerSession 在每个快照里都在增长。点击它,就会跳到它的代码。
那么,是什么让这些会话一直存活?
引用图一路追溯到根:一个静态字典,它记住了每一笔订单,从不遗忘。
修复方法:只保留最近一千笔订单,每来一笔新的,就淘汰最旧的一笔。
重新构建,再次运行,然后再跟踪一次内存。
这一次,堆保持平稳,没有任何可疑项超过 Low。无需离开编辑器,就找到了泄漏、修复了它,并证明了修复有效。