Friday, September 10, 2010

限制Windows程式的記憶體使用量

和朋友討論到,在windows下如何限制一個程式的記憶體使用量,以避免佔用過多的系統資源。

其中一個解法為使用 SetProcessWorkingSetSize(),最簡單的情況下只需要三行程式:

int pid = GetCurrentProcessId();
HANDLE hProcess = OpenProcess(PROCESS_SET_QUOTA, FALSE, pid);
SetProcessWorkingSetSize(hProcess, minMemBytes, maxMemBytes);

不過實際執行程式會發現,只要記憶體還算充足,程式還是能獲得超過上限的記憶體。在我的4GB電腦上,大概可以使用到1.8G的記憶體,才會無法配置新的記憶體。

No comments:

Post a Comment