【发布时间】:2020-01-01 05:12:16
【问题描述】:
我的 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 中的第一个子行(使用 11,523 K 的 Gen0 堆) - 但是其他类似大小的堆呢( 10.3MB, 9.9MB, 9.4MB, 9.0MB, 5.7MB) - 里面有什么,为什么 VS 不报告它们?如果它们与应用程序无关,那么为什么进程的内存使用率在它不在调试器下运行时会如此之高?
【问题讨论】:
标签: memory heap-memory managed vmmap