проверить оставшееся место в оперативной памяти в Windows? - PullRequest
2 голосов
/ 17 января 2011

Я создаю программу, которая будет выделять огромное количество данных в оперативной памяти. Теперь, если в ОЗУ не хватает места, программа будет помещена в виртуальную память, и произойдет перестановка подкачки. Это очень медленно. Можно ли проверить оставшееся место в оперативной памяти? И можно ли проверить, использует ли система виртуальную память?

Это на C ++ в Windows.

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Вы можете использовать функцию GlobalMemoryStatusEx , чтобы получить объем свободной оперативной памяти. Чтобы получить уведомление, когда у вас заканчивается ОЗУ, вы можете использовать метод QueryMemoryResourceNotification .

1 голос
/ 17 января 2011

Наличие количества бесплатных оперативных памяти не означает, что Windows не будет пейджировать вашу программу. Вы можете попробовать API SetProcessWorkingSetSize для GetCurrentProcess, но он не дает гарантии, вместо этого вы можете использовать VirtualLock, который должен это гарантировать, но вы можете получить ухудшенную производительность.

...