市面上常見的記憶體釋放工具多採用 SetProcessWorkingSetSize(-1, -1) 強制修剪所有進程工作集,導致大量頁面被交換至磁碟,造成磁碟 IO 飆升、系統短暫凍結、甚至觸發應用程式頁面錯誤。Windows Server 2003 內建 Empty.exe (位於 %Windir%\System32\ 或 Resource Kit),採用針對性釋放機制:僅回收指定進程已不再使用的待頁面 (Standby/Modified List),不觸碰作用中工作集,零干擾、零風險。
Empty.exe # 依進程 ID 釋放
Empty.exe # 依進程映像名稱釋放 (如 "sqlservr.exe", "w3wp.exe")
| 場景 | 命令範例 | 說明 |
|---|---|---|
| SQL Server 緩衝區未及時釋放導致可用記憶體驟降 | Empty.exe sqlservr.exe | 僅回收 SQL Server 進程的待頁面,不影響執行計畫快取、鎖定頁面 |
| IIS 應用程式集區 (w3wp.exe) 疑似記憶體洩漏 | Empty.exe w3wp.exe | 釋放非固定頁面,配合集區回收機制延長重啟間隔 |
| 特定 PID 進程 (如 1234) 佔用大量非作用中記憶體 | Empty.exe 1234 | 精準打擊,不影響其他服務 |
| 批次腳本定期清理多個已知洩漏服務 | for %%p in (sqlservr.exe w3wp.exe myservice.exe) do Empty.exe %%p | 排程任務每 30 分鐘執行一次 |
| 特性 | 第三方強制清理工具 | Empty.exe (原生) |
|---|---|---|
| 作用範圍 | 所有進程 (含系統關鍵進程) | 指定進程/所有進程 (可選) |
| 機制 | SetProcessWorkingSetSize(-1,-1) 強制修剪工作集 | 呼叫系統記憶體管理器回收待頁面/修改頁面 |
| 磁碟 IO 衝擊 | 極大 (大量頁面寫入頁面檔) | 極小 (僅寫入已修改待頁面) |
| 系統凍結風險 | 高 (特別是記憶體壓力大時) | 無 |
| 應用程式穩定性 | 可能觸發頁面錯誤、例外 | 不影響作用中頁面,零干擾 |
| 適用版本 | 通用 (但風險隨版本增加) | 僅 Windows Server 2003 (XP/2000 無此工具) |
Memory\Available MBytes < 512 (或視實體記憶體 10% 為閾值)。C:\Windows\System32\Empty.exe,引數 sqlservr.exe w3wp.exe。max server memory 限制緩衝區上限,而非依賴外部工具回收。結語: Empty.exe 是 Windows Server 2003 時代的精準記憶體手術刀:針對性、非強制、零副作用。在無法擴充記憶體、無法升級系統的存量環境中,配合效能監視器自動化觸發,可有效延長服務重啟週期、平滑度過尖峰負載。切記:工具治標,架構治本。
Windows 2000 系統安全防範四大對策:備份、NTFS、加密、移除 Everyone
Windows Server 2003 卷影副本:實現網路共享檔案還原
Office 2000/2003/2003 經典疑難雜症五則:註冊表修復大全
Windows Server 2003 伺服器極致安全加固清單:NTFS 權限、服務精簡、登入強化、IPC$ 封堵、防火牆規則
Windows Server 2003 常見問題快速解決手冊
Windows Server 2008 網路負載平衡 (NLB) 安裝與配置入門