Сколько памяти или других ресурсов используется для отдельного пользователя VirtualAlloc (xxxx, yyy, MEM_RESERVE, zzz)
?Память (и другие ресурсы), используемые отдельным распределением VirtualAlloc
Есть ли разница в потреблении ресурсов (например, ядро выгружаемого/неподкачиваемый пул), когда я выделил один большой блок, как это:
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 для каждого из них. Я знаю, что распределение больших блоков будет медленнее, но можно ли ожидать каких-либо штрафов за потребление ресурсов?
Как я не доволен нынешним единственным ответом, теперь есть щедрость. Что я ожидаю от получаемого ответа: - либо подробное описание, какие ресурсы ядра используются отдельным блоком, зарезервированным с использованием VirtualAlloc (... MEM_RESERVE ...) вызова - или подробный эксперимент по измерению ресурсов, используемых индивидуальный вызов VirtualAlloc (... MEM_RESERVE ...) или группой абонентов VirtualAlloc (... MEM_RESERVE ...) – Suma