物理內(nèi)存,顧名思義,就是實實在在存在的那個東西,插在你電腦主板上的內(nèi)存條所提供的空間。 頁面文件,這個是硬盤上的一塊空間,在Windows下表現(xiàn)為一個文件。這個頁面文件存在的意義就是在物理內(nèi)存被占用滿以后,將物理內(nèi)存中的東西移動到硬盤上的這個空間,騰出物理內(nèi)存給需要的應(yīng)用程序來使用。 交換區(qū),這個是物理內(nèi)存和頁面文件空間的總和,“交換”的含義,則是指在硬盤文件、CPU和其它IO之間進行數(shù)據(jù)的傳遞和暫存(這句話對于了解計算機運行基本流程的人來說應(yīng)該可以理解)。 虛擬內(nèi)存,這個概念恐怕是目前為止最為含混不清的一個東西了,會有很多種不同的含義。在這里,我先說一下在一個程序猿眼中的虛擬內(nèi)存是個啥。 很顯然,這個世界上的電腦配置是五花八門,可用的物理內(nèi)存數(shù)量也是分為很多等級的。作為一個苦逼的程序猿,我們不可能在考慮程序邏輯的時候還要去 考慮客戶的機器有多少內(nèi)存可以用,也不可能去詳細調(diào)查實際的物理內(nèi)存地址是多少到多少,好在OS會為我們完成這些工作。每一個運行的進程,都會獲得一個 4G的內(nèi)存地址空間,這就是所謂的虛擬內(nèi)存,這里面的所有地址都是虛擬的,和物理內(nèi)存啥的并不直接掛鉤。而在操作系統(tǒng)那頭,這些虛擬地址所映射到的實際地 址,可以是物理內(nèi)存地址,也可以是頁面文件的地址。如果是物理內(nèi)存小于這個虛擬地址的范圍的話,映射的物理內(nèi)存還可能是重復(fù)的物理內(nèi)存地址片段,使用的時 候可以通過清空內(nèi)存數(shù)據(jù),將內(nèi)存數(shù)據(jù)寫入頁面文件這樣的方式進行物理內(nèi)存的重新利用,以提高物理內(nèi)存的利用效率。 而不少人,尤其是對Windows剛有所了解的人,所理解的虛擬內(nèi)存,往往是指頁面文件。這也是微軟的意見,他們在自己的操作系統(tǒng)中就是這么寫的,見下圖: ![]() ![]() 而在Aida64,或者說是曾經(jīng)的Everest中,虛擬內(nèi)存是交換區(qū) + 物理內(nèi)存 = 物理內(nèi)存 * 2 + 頁面文件。老實說,我并沒有理解這個的概念是什么。 ![]() 其實上述虛擬內(nèi)存的說法都沒有什么問題,都是約定俗成的說法,關(guān)鍵是要搞清楚什么時候的“虛擬內(nèi)存”是指什么,概念不混淆就可以。 順便吐個槽,我發(fā)現(xiàn)Win7的內(nèi)存調(diào)度很詭異,物理內(nèi)存不是邊占用邊釋放的,總是等到占用率很高(接近滿)的時候,來個集中釋放,也就是寫入頁面 文件。我的筆記本硬盤硬盤性能不咋樣,給這么一搞整個就會卡死半天,而下載軟件開時間長一點的話很容易就把物理內(nèi)存占滿。據(jù)說是這 Superfetch(拼錯沒?)的效果,關(guān)了以后內(nèi)存占用率確實上升的慢了一點,不過占用率感覺還是偏高,看著真不爽。 |
|