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