Сколько памяти или других ресурсов используется для отдельного VirtualAlloc (xxxx, yyy, MEM_RESERVE, zzz)
?
Есть ли какая-либо разница в потреблении ресурсов (например, выгружаемый / невыгружаемый пул ядра), когда я выделил один большой блок, например так:
VirtualAlloc( xxxx, 1024*1024, MEM_RESERVE, PAGE_READWRITE )
или несколько меньших блоков, например:
VirtualAlloc( xxxx, 64*1024, MEM_RESERVE, PAGE_READWRITE );
VirtualAlloc( xxxx+1*64*1024, 64*1024, MEM_RESERVE, PAGE_READWRITE );
VirtualAlloc( xxxx+2*64*1024, 64*1024, MEM_RESERVE, PAGE_READWRITE );
...
VirtualAlloc( xxxx+15*64*1024, 64*1024, MEM_RESERVE, PAGE_READWRITE );
Если кто-то не знает ответа, но может предложить эксперимент, который сможет его проверить, он будет полезен какхорошо.
Мотивация заключается в том, что я хочу реализовать возврат памяти обратно в ОС для TCMalloc под Windows.Моя идея состоит в том, чтобы заменить отдельные большие вызовы VirtualAlloc, выполнив последовательность небольших вызовов (гранулярность распределения), чтобы я мог вызывать VirtualFree для каждого из них.Я знаю, что таким образом распределение больших блоков будет медленнее, но можно ли ожидать каких-либо штрафов за потребление ресурсов?