我用userdump抓了一个进程的内存,然后用windbg打开看heap的问题,发现一个比较奇怪的地方,如下
!heap 002a0000 -hf
Heap entries for Segment19 in Heap 002a0000 7e030000: 00000 . 00040 [01] - busy (40) 7e030040: 00040 . 00fc0 [10] 7e031000: 007b7000 - uncommitted bytes. 7e7e8000: 00000 . 00400 [01] - busy (3f4) 7e7e8400: 00400 . 000a8 [00] 7e7e84a8: 000a8 . 00028 [01] - busy (20) 7e7e84d0: 00028 . 00b30 [10] 7e7e9000: 0014a000 - uncommitted bytes. 7e933000: 00000 . 00ad8 [00] 7e933ad8: 00ad8 . 00028 [01] - busy (20) 7e933b00: 00028 . 00400 [01] - busy (3f4) 7e933f00: 00400 . 00100 [10] 7e934000: 000cc000 - uncommitted bytes. 7ea00000: 00000 . 00fd8 [00] 7ea00fd8: 00fd8 . 00028 [11] - busy (20) 7ea01000: 00413000 - uncommitted bytes. ------------------------------------------------------------------------
我奇怪的是那个umcommitted是什么含义啊,为什么分配的时候在进程地址空间不连续啊,就是上面7e030040后面那个7e031000地址怎么有那么多未提及的空间,而不让7e7e8000跟7e030040连接上啊
这样,不是很容易造成内存碎片么
|