2013-02-01 40 views
1

我的應用程序之一據報道是使用5演出記憶,當我把過程的轉儲和windbg分析,我可以看到,總承諾的大小是5演出據報道,但是總託管堆大小僅爲1.6演唱會。高承諾的內存,但小堆大小

問題:當堆大小隻有幾個gigs時,可能會導致提交大小如此之大,我可以看到MEM_COMMIT大小几乎全部被PAGE_READWRITE節使用,它可能是內存碎片嗎?

國家大小 MEM_COMMIT 5.653千兆 MEM_RESERVE 2.597千兆

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

+2

沒有人可以用這個小小的信息爲你調試。位圖總是吞噬大量非託管內存的好方法。使用內存分析器。 –

+0

我明白了,但是你能糾正我 - 如果提交的內存大小大於託管堆大小,那麼額外的內存是由於非託管內存或可能由於碎片而被解釋的?如果GC堆大小爲1.6Gig,是否意味着其餘部分來自非託管? –

回答

2

是在託管堆中沒有計入提交大小可能來自非託管堆中的碎片。命令!堆-s將在windbg中顯示它們。 您也可以使用VMMap快速排除其他類型的內存分配數據。