Windows

如何防止 Windows Server 2003 修剪程序的工作集?

  • April 11, 2014

關於 Windows Server 2003 如何處理程序的工作集,我有兩個不同的問題,儘管我認為這些問題是相關的。

首先,在控制台會話上執行的 GUI 應用程序的工作集被修剪,當它們的頂級視窗被最小化時。我知道讓伺服器程序使用 GUI 執行是相當不尋常的,但這些都是遺留應用程序,它們在做我無能為力的重要事情。

其次,有一個長期執行的數據庫伺服器,它在客戶端連接時分配大量記憶體,但在另一個客戶端連接之前不會觸及該記憶體。與此同時,幾天可能過去了,作業系統似乎認為這足以修剪該程序的工作集。

在這兩種情況下,都有大量可用的物理 RAM(比應用程序需要的多 GB),所以我希望 Windows 不修剪它們的工作集。有設置來配置這個嗎?這些都是第三方應用程序,因此更改記憶體分配或鎖定記憶體中的頁面不是可行的選擇。

您發布的文章包含您要求的所有資訊,但我知道這不是您想听到的。

首先,我不知道您的應用程序是什麼,它們做什麼,或者為什麼他們的工作集沒有被修剪如此重要,或者任何其他可能幫助您解決問題的相關資訊該過程的工作集正在促成。在我看來,您必須支持一個設計不佳的應用程序,並且您正試圖改變 Windows 的行為以彌補設計不佳的應用程序。這是一個糟糕的情況,我很抱歉。

也就是說,我將嘗試回答您的問題:

您正在描述如何設計 Windows 的基本機制。GUI 視窗上最小化按鈕的預設行為將呼叫 ShowWindow(hWnd, SW_MINIMIZE) 來修剪程序的工作集 - 故事結束。

您傾向於使用這個設計不佳的應用程序的編寫者可能選擇攔截當使用者點擊最小化視窗按鈕並呼叫 ShowWindow(hWnd, SW_SHOWMINIMIZED) (不修剪 WS)而不是 ShowWindow 時發生的 WM_SYSCOMMAND 消息(hWnd, SW_MINIMIZE),但他們沒有。如果您無法聯繫此應用程序的開發人員並告訴他們再試一次,這次是使用實際的伺服器應用程序,那麼您就會陷入這種行為。

引用自:https://serverfault.com/questions/362778