Насколько я понимаю, MEM_RESERVE на самом деле является «свободной» памятью, то есть доступной для использования моим процессом, но просто еще не выделена? Или это было ранее выделено, но с тех пор было освобождено?
В частности, посмотрите в выводе моего адреса! Ниже, как я почти исчерпал виртуальное адресное пространство (99900 КБ свободно, 2307872 как MEM_PRIVATE. Но состояния показывают, что 44,75% из этого на самом деле MEM_RESERVE. Означает ли это, что это на самом деле бесплатно в моем процессе ... но может быть фрагментирован?
0:000> !address -summary
--------- PEB a8bd8000 not found ----
-------------------- Usage SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Pct(Busy) Usage
259af000 ( 616124) : 22.29% 23.12% : RegionUsageIsVAD
618f000 ( 99900) : 03.61% 00.00% : RegionUsageFree
13e22000 ( 325768) : 11.78% 12.22% : RegionUsageImage
42c04000 ( 1093648) : 39.56% 41.04% : RegionUsageStack
42d000 ( 4276) : 00.15% 00.16% : RegionUsageTeb
2625d000 ( 625012) : 22.61% 23.45% : RegionUsageHeap
0 ( 0) : 00.00% 00.00% : RegionUsagePageHeap
0 ( 0) : 00.00% 00.00% : RegionUsagePeb
1000 ( 4) : 00.00% 00.00% : RegionUsageProcessParametrs
1000 ( 4) : 00.00% 00.00% : RegionUsageEnvironmentBlock
Tot: a8bf0000 (2764736 KB) Busy: a2a61000 (2664836 KB)
-------------------- Type SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Usage
618f000 ( 99900) : 03.61% : <free>
13e22000 ( 325768) : 11.78% : MEM_IMAGE
1e77000 ( 31196) : 01.13% : MEM_MAPPED
8cdc8000 ( 2307872) : 83.48% : MEM_PRIVATE
-------------------- State SUMMARY --------------------------
TotSize ( KB) Pct(Tots) Usage
57235000 ( 1427668) : 51.64% : MEM_COMMIT
618f000 ( 99900) : 03.61% : MEM_FREE
4b82c000 ( 1237168) : 44.75% : MEM_RESERVE
Largest free region: Base 7e4a1000 - Size 000ff000 (1020 KB)
СЛЕДУЙТЕ ЗА:
Итак, с точки зрения моего примера, этот процесс сообщает о «нехватке памяти», но на самом деле он МОЖЕТ делать выделения, но кто-то MEM_RESERVED больше, чем им нужно в этот момент, не позволяя кому-то еще даже иметь возможность выделять?