如何强制Windows向所有应用程序发送'LOW_MEMORY'信号?

Pol*_*hic 6 c++ memory memory-management low-memory

我正在研究一些"免费RAM"工具,它必须强制Windows向'LOW_MEMORY'所有应用程序发送信号(要求所有应用程序释放它们未使用的数据,SQL服务器和文件缓存都会被清除,这样你最终会得到很多额外的可用空间).

在C++中最好的方法是什么?对我来说最"自然"的解决方案是分配大量内存,但这是一种"好"和"稳定"的方式吗?也许在WinAPI或其他地方有任何c ++ Windows本机函数?

ps该工具的概念来自(我知道更好的方法是......购买一些RAM,但我现在必须编写这样的工具):

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

Jam*_*ard 2

另一种可能性可能是迭代活动进程列表,并要求每个进程通过SetProcessWorkingSetSize ( hProcess, (SIZE_T)-1, (SIZE_T)-1) 修剪其工作集,如MSDN 上所述,可能会跳过应用程序,如果您的目的是尝试提高某些特定应用程序的性能(基准测试绝对是您的朋友)。

这会导致操作系统将虚拟页刷新到磁盘,从而为其他应用程序释放物理内存。我不确定这是否会导致 SQL Server 放松其内存需求,但它确实值得一试。