我的 ASP.NET Core 2.2 Web 应用程序在 .NET Framework 4.7.2 上运行,在空闲启动后使用超过 220MB+。
220MB 很高——因为它在一个小型 Azure 应用服务计划中运行,我想看看可以做些什么来减少内存使用量。Visual Studio 的诊断工具窗口显示托管对象堆仅占 220MB 中的 11MB。
对该解释不满意(另外 209MB 去哪儿了?!)我使用 VMMap 进行查看,它报告 85MB 进程的私有字节是不同的托管堆 - 而不是 Visual Studio 报告的 11MB。
这是一个屏幕截图:
我知道 Visual Studio 在内存快照中报告的 11.5MB 堆可能对应于 VMMap 中的第一个子行(Gen0
使用 的堆11,523 K
) - 但是其他类似大小的堆(10.3MB、9.9MB、9.4MB、 9.0MB, 5.7MB) - 里面有什么,为什么 VS 不报告它们?如果它们与应用程序无关,那么当进程不在调试器下运行时,为什么进程的内存使用率如此之高?