最近一台古董電腦安裝Windowx XP 跑傳真的服務與FTP,但是發現非常的不穩,經過一段時間的測試發現原來出現了所謂的系統資源不足,雖然是古董Server好歹也是雙PIII-1G + 1G Ram配備,怎麼會出現系統資源不足的訊息呢?秉持著工程師追根究底的精神,開始上網研究看看這到底是什麼原因。
何謂系統資源(System Resource)
微軟將Windows的系統資源Heap分為五個Heap,其中User資源Heap為三個,而GDI資源Heap為兩個。 三個User資源Heap分別是:16位元 (User Heap,64KB);32位元 (Windows Heap,2MB);32位元(User Menu Heap,2MB)。兩個GDI資源Heap分別是:16位元的GDIHeap (GDI Heap,64KB);32位元的 GDIHeap (GDI,2MB)。從這裡的系統資源分類和大小我們應該明白,不管CPU是P4還是486,記憶體是8M還是1G,所有 Windows的用戶都擁有同樣大小的系統資源(Heap),用戶不能自己增加或減少系統資源的大小,這是由操作系統決定的,與硬體沒有任何關係。
系統資源不足的主因::
在Windows中每運行一個程序,系統資源就會減少。有的程序會消耗大量的系統資源,即使把資源關閉,在記憶體當當中還是有一些DLL文件在執行,這樣就會讓系統的運行速度下降,甚至出現系統資源不足的情況發生。
以上是網路上收集回來融合的,但是說真的看完了之後知道原因,但是都沒辦法找出是什麼東西造成系統資源不足的,有關於網路上一些流傳的修改方式是強制系統釋放DLL,但是那是屬於Windows 9X 時代有所限制的情況之下才需要這樣做,根據國外的一些資料顯示(如下表),WindowsNT/2000/XP 已經是無限制了,那為何還會出現系統資源不足的情況呢??
Resource Comparison
Resource | Windows 3.x | Windows 9.x /Me |
Windows NT /2000/XP |
---|---|---|---|
Window/Menu Handles | about 200 | 32KB (each) | Unlimited |
Timers | 32 | Unlimited | Unlimited |
COM/LPT ports | 4 each | Unlimited | Unlimited |
Listbox items (per listbox) | 8KB | 32KB | Unlimited |
Listbox data (per listbox) | 64KB | Unlimited | Unlimited |
Edit control data (per control) | 64KB | Unlimited | Unlimited |
Regions | All in 64KB segment | Unlimited | Unlimited |
Logical pens, brushes | All in 64KB segment | 64KB segment | Unlimited |
Physical pens, brushes | All in 64KB segment | Unlimited | Unlimited |
Logical fonts | All in 64KB segment | 750-800 | Unlimited |
Installed fonts | 250-300 (best case) | 1000 | Unlimited |
Device Contexts | 200 (best case) | 16KB | Unlimited |
目前是將傳真服務挪至 Windows 2003 上去執行,並持續觀察是否還會發生系統資源不足的情況,但是百思不得其解的 Windows XP 系統資源的限制在哪?微軟的網站也找不到相關資訊,如果有朋友知道的話,是否可以指點一下迷津,讓Leo能更清楚的了解一些Windows 運作的基本原理。