带旁白、原创配乐和字幕。在 VS Code 中录制的 Storefront 演示完整流程:Track Memory、可疑泄漏、保留图、输入修复代码,然后再次运行。快进的片段在画面上有标注。

屏幕录像:在 VS Code 中用 SharpLsp 内存分析器修复 C# 内存泄漏,从可疑泄漏到保留图,再到验证修复

阅读指南:如何修复 C# 和 .NET 中的内存泄漏

文字稿

这是 Storefront,一个内存不断上涨的 C# 应用。直接在 VS Code 里对它的进程开启内存跟踪。

SharpLsp 每十秒为堆拍一次快照,而堆一直在增长。

可疑泄漏按持续增长程度排序。CustomerSession 在每个快照里都在增长。点击它,就会跳到它的代码。

那么,是什么让这些会话一直存活?

引用图一路追溯到根:一个静态字典,它记住了每一笔订单,从不遗忘。

修复方法:只保留最近一千笔订单,每来一笔新的,就淘汰最旧的一笔。

重新构建,再次运行,然后再跟踪一次内存。

这一次,堆保持平稳,没有任何可疑项超过 Low。无需离开编辑器,就找到了泄漏、修复了它,并证明了修复有效。