物理內存
內存條容量的大小
物理內存(Physical memory)是相對於虛擬內存而言的。物理內存指通過物理內存條而獲得的內存空間,而虛擬內存則是指將硬碟的一塊區域劃分來作為內存。內存主要作用是在計算機運行時為操作系統和各種程序提供臨時儲存。常見的物理內存規格有256M、512M、1G、2G等,現如今隨著計算機硬體的發展,已經出現4G、8G甚至更高容量的內存規格。當物理內存不足時,可以用虛擬內存代替。
在應用中,自然是顧名思義,物理上,真實存在的插在主板內存槽上的內存條的容量的大小。看計算機配置的時候,主要看的就是這個物理內存。
物理內存是計算機上的最重要的資源之一。Windows的內存管理器負責給活動進程、設備驅動,和操作系統自己分配內存。因為絕大多數系統所能訪問的數據和代碼遠比物理內存多,所以從本質上來說,物理內存是代碼和數據在其中運行的窗口。所以內存容量對性能有影響,因為如果進程或者操作系統所需的代碼或者數據不存在,內存管理器就需要從磁碟中讀取這些內容。
物理內存,CPU的地址線可以直接進行定址的內存空間大小。比如8086只有20根地址線,那它的定址空間就是1MB。我們就說8086能支持1MB的物理內存。即使我們安裝了128M的內存條在板子上,我們也只能說8086擁有1MB的物理內存空間。同理32位的386以上CPU,就可以支持最大4GB的物理內存空間了。
虛擬內存與物理內存的區別:虛擬內存就與物理內存相反,是指根據系統需要從硬碟虛擬地勻出來的內存空間,是一種計算機系統內存管理技術,屬於計算機程序,而物理內存為硬體。因為有時候當你處理大的程序時候系統內存不夠用,此時就會把硬碟當內存來使用,來交換數據做緩存區,不過物理內存的處理速度是虛擬內存的30倍以上。
除了會對性能造成影響,物理內存的容量還會影響其他資源。例如,對於非分頁池來說,這是由物理內存提供後備的操作系統緩衝,很明顯,其容量會受到物理內存的限制。物理內存也會對系統的虛擬內存限制有影響,虛擬內存的大小等於物理內存容量、再加上所有頁面文件的最大容量。物理內存還會對進程的最大數量具有間接的影響,筆者將會在今後的文章里專門提到線程和進程的限制。
Windows對於物理內存的支持,要受到諸如硬體限制、許可、操作系統數據結構,以及驅動程序的兼容性等方面的綜合影響。MSDN網站的Memory Limits for Windows Releases文章對不同Windows版本、以及同一個版本的不同SKU的限制進行介紹。
可以查看所有Windows版本的不同SKU的物理內存支持許可。例如,32位Windows Server 2008標準版僅支持4GB,而32位Windows Server 2008數據中心版支持64GB。類似的,64位Windows Server 2008標準版支持32GB,而64位Windows Server 2008數據中心版支持2TB。內存,不過Windows Server性能產品組知道有兩台伺服器擁有那麼多的內存,其中一台位於某地的實驗室。該伺服器的任務管理器如下圖所示:32位的最大限制是128GB,Windows Server 2003數據中心版可以支持,這是因為在大內存的系統上,內存管理器用來追蹤物理內存的結構,需要消耗更多系統虛擬地址空間。內存管理器把每個內存頁的追蹤數據保存在叫做PFN資料庫的數組中,而且考慮到性能因素,會把整個PFN資料庫映射到虛擬內存中。因為它用28位元組的數據結構來代表每個內存頁,128GB系統的PFN資料庫需要將近930MB的空間。32位Windows擁有4GB的虛擬地址空間,由硬體所定義,默認劃分為兩半,其中一半供用戶模式進程(例如Notepad)所使用,另一半供系統所使用。因此980MB的容量就要佔據將近一半的系統虛擬地址空間(共2GB),只剩下約1GB空間可以用來映射內核、驅動程序、系統緩存和其他系統數據結構。
物理內存
64位Windows客戶端,不同SKU的內存支持也有所不同,Windows XP Starter版的內存支持最低,僅512MB,而Windows Vista旗艦版的內存支持最高,可達128GB。但是所有版本的32位Windows客戶端SKU,包括Windows Vista、Windows XP和Windows 2000 Professional,最大支持4GB物理內存。標準的X86內存管理模式,最大可以支持4GB的物理地址訪問。在早期,並不需要考慮在客戶端提供超過4GB的支持,因為當時很少有計算機配備那麼高的內存,哪怕是伺服器。
但是在Windows XP SP2開發的過程中,已經可以預見客戶端計算機將會配備超過4GB的內存,所以Windows產品組對超過4GB的Windows XP計算機進行大量的測試。Windows XP SP2還支持物理地址擴展(PAE)功能,該功能本來是為了在硬體上實現非執行(NX)保護,因為這是數據執行保護(DEP)的必要條件,但是該功能還可以支持超過4GB的內存。
Windows產品組的工程師發現,很多測試計算機會發生崩潰、掛起或者無法啟動的故障現象,這是因為某些設備驅動程序所導致的,主要是一些客戶端計算機(而非伺服器)上的顯卡或者音效卡,其驅動程序在編寫時沒有考慮到內存大於4GB的情況。所以,這些驅動程序會截去那部分地址,從而導致內存衝突以及其他副作用。而伺服器則通常會配備更加常規的硬體設備,其驅動程序更加簡單穩定,因為通常來說碰到這些問題的幾率很小。由於客戶端設備驅動程序所存在的這些問題,迫使Windows客戶端SKU只能忽略高於4GB的那部分物理內存,哪怕從理論上來說可以對其進行定址。
安裝多一條物理內存。當然,這是解決問題的最根本最快的方法。2G內存現有來說,對於Win7也是剛剛好夠用,等我們安裝程序過多是必定會導致系統運行緩慢。如果可以的話,直接換成64位操作系統,讓系統更好的識別大內存,並調用。
安裝一些內存整理軟體,可以再運行大型程序是先運行內存整理軟體對內存進行整理。以緩解內存使用率過高。
設置更大的虛擬內存。虛擬內存的設置,必須為實際內存的1.5倍。
還要養成良好的殺毒習慣,並對啟動項做相應的調整。減少不必要的啟動程序,清理插件及服務。通過上述方法,可以很容易的解決物理內存使用率過高的問題。