!dumpheap -stat 的内存使用量不等于使用的总内存量

sli*_*god 1 .net memory-leaks windbg

我一直在尝试识别应用程序中的内存泄漏。我制作了该进程的转储文件,并使用 Windbg 对其进行了查看。当我执行 !dumpheap -stat 并总结内存的总使用量时,其总计为 1.6GB。但创建转储时,它自己的进程使用了​​近 2.8GB。谁能告诉我丢失的 1.2GB 在哪里?

Bri*_*sen 5

!dumpheap并没有按照你的想法去做。它转储托管堆,这只是 .NET 进程的一部分。例如,程序集中的代码(IL 和 JIT 编译的代码)不存储在托管堆上。此外,本机程序集分配自己的内存,这些内存也不会显示在托管堆上。因此,您永远不会看到托管堆的大小与进程的大小相匹配。没有一个地方可以查找剩余内存使用情况。通过使用 vmmap,您也许可以获得一些额外的见解。