Как заставить Windows отправлять сигнал «LOW_MEMORY» всем приложениям?

Я работаю над инструментом «свободной оперативной памяти», который заставляет Windows отправлять 'LOW_MEMORY' Сигнал всем приложениям (который требует, чтобы все приложения освободили свои неиспользуемые данные, SQL-сервер и файловые кэши очищаются, так что у вас останется много дополнительного свободного места).

Что будет лучшим подходом для этого в C ++? Самым «естественным» решением для меня было бы выделить большой объем памяти, но является ли это «хорошим» и «стабильным» способом? Может быть, есть какая-то нативная функция Windows для C ++ для WinAPI или где-то еще?

постскриптум
Концепция этого инструмента возникла (и я знаю, что лучший способ — это купить немного оперативной памяти, но я должен написать такой инструмент сейчас):

https://superuser.com/questions/214526/how-does-a-free-up-ram-utility-free-up-ram

5

Решение

Другой возможностью может быть перебрать список активных процессов и попросить каждого из них обрезать свой рабочий набор с помощью SetProcessWorkingSetSize(hProcess, (SIZE_T) -1, (SIZE_T) -1), как описано здесь на MSDN, потенциальный пропуск приложений, если вы намерены попытаться улучшить производительность какого-то конкретного приложения (здесь вам абсолютно необходим бенчмаркинг).

Это заставляет ОС сбрасывать виртуальные страницы на диск, освобождая физическую память для других приложений. Я не уверен, приведет ли это, например, к тому, что SQL Server ослабит свои требования к памяти, но это, безусловно, стоит попробовать.

2

Другие решения

Есть несколько ссылок, которые могут быть вам полезны на MSDN:

Надеюсь, это поможет вам начать. Другой способ, которым вы могли бы освободить оперативную память, — это сигнализировать о том, что окна распределяют память каждого процесса на файл подкачки, что освобождает физическую память. Затем, когда пользователь использует конкретное приложение, оно будет перемещено обратно в физическую память операционной системой, таким образом, управление по большей части все еще обрабатывается операционной системой.

0

По вопросам рекламы [email protected]