簡體   English   中英

如何強制Windows向所有應用程序發送'LOW_MEMORY'信號?

[英]How to force Windows to send 'LOW_MEMORY' signal to all applications?

我正在研究一些“免費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

另一種可能是通過活動進程列表進行迭代,並通過SetProcessWorkingSetSize (hProcess,(SIZE_T)-1,(SIZE_T)-1)要求每個人修剪它的工作集,如MSDN中所述 ,可能會跳過應用程序,如果您的意圖是嘗試提高某些特定應用程序的性能(基准測試絕對是您的朋友)。

這會導致操作系統將虛擬頁面刷新到磁盤,從而為其他應用程序釋放物理內存。 我不確定這是否會導致,例如,SQL Server放松它的內存需求,但它肯定值得一試。

在MSDN上有一些可能對您有用的鏈接:

希望這些可以給你一個開始。 你可以釋放RAM的另一種方法是發信號通知窗口將每個進程的RAM分配到交換文件,這將釋放物理RAM。 然后,當用戶使用特定應用程序時,它將被OS移回物理RAM,這樣管理仍然大部分由OS處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM