「記憶體不足」「Out of memory」錯誤在 DOS 年代與 Windows 環境成因截然不同。本文分環境深度解析,提供從 CONFIG.SYS 優化到現代記憶體管理的完整對策。
| 成因 | 徵兆 | 對策 |
|---|---|---|
| EMS/UMB 未正確啟用 | 大型程式 (WPS、WordStar、編譯器) 啟動失敗「Out of memory」 | CONFIG.SYS 確保:DEVICE=C:\DOS\HIMEM.SYSDEVICE=C:\DOS\EMM386.EXE RAM (關鍵:RAM 參數啟用 UMB/EMS)DOS=HIGH,UMB (DOS 核心上移、啟用 UMB) |
| TSR/驅動佔用過多常規記憶體 | MEM /C 顯示常規記憶體可用 < 500KB | ① 移除非必要 TSR (滑鼠、快取、防毒、選單程式) ② LOADHIGH (LH) 載入驅動/TSR 至 UMB③ DEVICEHIGH 載入裝置驅動至 UMB |
| 程式與 EMS/XMS 衝突 | 啟用 HIMEM/EMM386 後特定程式跑不動 | ① 程式需 EMS → 保留 EMM386 RAM ② 程式衝突 EMS → EMM386.EXE NOEMS (僅提供 UMB/XMS)③ 程式需特定 UMB 區段 → EMM386.EXE I=B000-B7FF 排除衝突區段④ 金山/WPS 經典案例: EMM386.EXE INT15=320 保留低端擴充記憶體給漢字庫 |
| 常規記憶體碎片化 | 總可用夠但最大連續區塊太小 | MEM /C 觀察最大可用區塊 → 調整載入順序 (大佔用者優先 LH) 或使用 QEMM/386MAX 優化器 (歷史工具) |
| 成因 | 徵兆 | 對策 |
|---|---|---|
| 實體 RAM 物理不足 | 常態提交充當 > 實體 RAM 80%、頻繁分頁、硬碟燈狂閃、系統卡頓 | ① 加裝實體記憶體 (根治) ② 關閉不用程式/分頁/服務 ③ 調整虛擬記憶體固定值 (參考文章 65615) ④ ReadyBoost (USB 3.0+ 隨身碟作分頁檔緩衝,效果有限) |
| 記憶體洩漏 (Memory Leak) | 特定程式運行時間越長佔用越大、關閉後不釋放、重開機暫緩 | ① 任務管理員/Resource Monitor 觀察「提交大小」持續增長 ② 更新/重裝該程式 ③ 開發環境:Visual Studio Diagnostic Tools / Valgrind / AddressSanitizer 定位洩漏點 |
| 剪貼板佔用大量記憶體 | 複製大圖/長文本/大量檔案後記憶體飆升 | Win+V 開啟剪貼板歷史 → 「全部清除」;或複製少量文字覆蓋。 |
| 桌面壁紙/視覺效果佔用顯存/系統記憶體 | 高解析度壁紙、動態主題、Aero/透明效果開啟 | 個人化 → 背景 → 純色;系統屬性 → 效能 → 視覺效果 → 最佳效能/自訂保留字型平滑。 |
| 啟動項/服務過多佔用基準記憶體 | 開機即佔用 3~4 GB+ (16 GB 機器) | Autoruns/工作管理員停用非必要啟動項;services.msc 停用非必要服務 (SysMain, DiagTrack, WSearch, Print Spooler 等)。 |
| 大型文件編輯 (Word/Excel/PS/AE/PR) | 開啟百頁文件/高解析度專案時記憶體飆升 | Word 關閉即時拼寫檢查;PS/AE 調整「記憶體使用量」上限;分批處理/使用代理檔/縮圖。 |
poolmon (Windows Driver Kit) 觀察 Non-paged Pool 標籤增長 → 對應驅動洩漏。!address -summary (WinDbg) 進階分析虛擬位址空間分佈。記憶體不足在 DOS 年代是「常規記憶體 640KB 爭奪戰」,在 Windows 年代是「實體 RAM + 分頁檔 總量 vs 提交充當」的博弈。**加裝實體 RAM 永遠是最直接、最有效、副作用最小的解法**。