2

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

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

状态大小 MEM_COMMIT 5.653 Gb MEM_RESERVE 2.597 Gb

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

4

1 回答 1

2

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

于 2013-02-04T09:25:29.927 回答