高提交内存,但堆大小小



据报道,我的一个应用程序使用了 5 GB 内存,当我转储进程并在 windbg 中进行分析时,我可以看到报告的总提交大小为 5 Gig,但总托管堆大小仅为 1.6 gig。

问题:当堆大小只有几千兆时,什么会导致提交大小如此之大,我可以看到MEM_COMMIT大小几乎都被PAGE_READWRITE部分使用,可能是内存碎片吗?

状态大小MEM_COMMIT 5.653 千兆字节MEM_RESERVE 2.597 千兆字节

GC 堆大小: 大小: 0x67cefd88 (1741618568) 字节。

是的,未在托管堆中考虑的提交大小可能来自非托管堆中的碎片。命令 !heap -s 将在 windbg 中显示它们。还可以使用 VMMap 快速排除其他类型的内存分配数据。