1g內(nèi)存夠用嗎?再談虛擬內(nèi)存的合理設(shè)置
內(nèi)存的價(jià)錢越來(lái)越便宜,很多新裝機(jī)的朋友都已經(jīng)在使用1GB的內(nèi)存,而還有很多人也在給老電腦的內(nèi)存升級(jí)。在升級(jí)了物理內(nèi)存之后,如何有效設(shè)置虛擬內(nèi)存才能獲得最大限度的性能提升?網(wǎng)上流傳的一些優(yōu)化虛擬內(nèi)存的方法真的有效嗎?這些就是本文將要討論的內(nèi)容。
網(wǎng)上有很多廣泛流傳的關(guān)于虛擬內(nèi)存優(yōu)化的技巧,其實(shí)很多都是經(jīng)不起推敲的。大家一起來(lái)看看吧。
1g內(nèi)存夠用嗎?再談虛擬內(nèi)存的合理設(shè)置_經(jīng)驗(yàn)技巧:
觀點(diǎn)一:對(duì)于擁有大容量物理內(nèi)存的用戶,可以完全禁用虛擬內(nèi)存。要徹底了解這個(gè)問(wèn)題,首先得明白什么是虛擬內(nèi)存,以及虛擬內(nèi)存有什么作用。在早期,因?yàn)閮?nèi)存價(jià)格非常昂貴,因此一般電腦上都不會(huì)配置太多,那么有時(shí)候如果操作系統(tǒng)和應(yīng)用程序需要的內(nèi)存數(shù)量超過(guò)了計(jì)算機(jī)中安裝的物理內(nèi)存數(shù)量,操作系統(tǒng)就會(huì)暫時(shí)將不需要訪問(wèn)的數(shù)據(jù)通過(guò)一種叫做“分頁(yè)”的操作寫入到硬盤上一個(gè)特殊的文件中,從而給需要立刻使用內(nèi)存的程序和數(shù)據(jù)釋放內(nèi)存。這個(gè)位于硬盤上的特殊文件就是分頁(yè)文件(也就是虛擬內(nèi)存文件或叫做交換文件)。對(duì)于Windows 2000/XP/2003操作系統(tǒng),分頁(yè)文件名為pagefile.sys,默認(rèn)情況下位于操作系統(tǒng)所在分區(qū)的根目錄下。
既然知道了虛擬內(nèi)存的由來(lái)和作用,那么持這種理論的人認(rèn)為,硬盤和內(nèi)存的速度具有天壤之別,如果禁用了虛擬內(nèi)存,系統(tǒng)就不需要花時(shí)間將內(nèi)存中的數(shù)據(jù)分頁(yè)到硬盤上,從而提高了系統(tǒng)的運(yùn)行效率。然而根據(jù)傳統(tǒng)的設(shè)計(jì),Windows 的許多核心功能都需要使用分頁(yè)文件,而如果你禁用了所有分頁(yè)文件,有些第三方的應(yīng)用軟件都可能會(huì)遇到內(nèi)存不足的錯(cuò)誤。其實(shí)在不需要的時(shí)候,Windows并不會(huì)使用分頁(yè)文件,因此這樣調(diào)整系統(tǒng)你并不能獲得任何性能上的提高。
觀點(diǎn)二:對(duì)于虛擬內(nèi)存,建議的設(shè)置是物理內(nèi)存數(shù)量的1.5-2倍(分別為虛擬內(nèi)存的最小值和最大值)。在討論這個(gè)問(wèn)題之前首先看兩種情況:有兩臺(tái)電腦,除了內(nèi)存,其他所有配置都相同。電腦A擁有128MB內(nèi)存,電腦B擁有1GB內(nèi)存,這兩臺(tái)電腦都運(yùn)行Windows XP操作系統(tǒng)。按照這個(gè)觀點(diǎn)的方法設(shè)置,電腦A的虛擬內(nèi)存將會(huì)設(shè)置為192MB-256MB,而電腦B的虛擬內(nèi)存將會(huì)設(shè)置為1.5GB-2GB。那么實(shí)際使用中呢,電腦A很可能會(huì)在運(yùn)行大型軟件或者游戲的時(shí)候產(chǎn)生虛擬內(nèi)存不足的問(wèn)題,而電腦B則會(huì)因?yàn)樵O(shè)置了如此大的分頁(yè)文件而導(dǎo)致硬盤空間的浪費(fèi)。如何根據(jù)實(shí)際情況設(shè)置虛擬內(nèi)存,這個(gè)我們會(huì)在下文中介紹。
觀點(diǎn)三:我們可以使用內(nèi)存釋放軟件將運(yùn)行中的程序占用的內(nèi)存釋放出來(lái),提高系統(tǒng)運(yùn)行效率。在否定這個(gè)觀點(diǎn)之前我們首先要明白一件事,任何程序,只要被執(zhí)行,就會(huì)占用一定的內(nèi)存空間(具體占用多少內(nèi)存則取決于程序自己的體積以及載入的數(shù)據(jù)文件的大小),那么這種所謂的內(nèi)存釋放軟件是如何生效的?軟件并沒(méi)有退出,從哪里釋放內(nèi)存呢?原來(lái)這種“優(yōu)化”軟件會(huì)把程序占用的內(nèi)存全部分頁(yè)到虛擬內(nèi)存中,從而造成了物理內(nèi)存被釋放的“假象”。
安裝有這類軟件的朋友可以試試看,打開Windows任務(wù)管理器,打開進(jìn)程選項(xiàng)卡,接著在“查看”菜單下選擇“選擇列”命令,在隨后出現(xiàn)的選擇列對(duì)話框中選中“虛擬內(nèi)存大小”這一選項(xiàng)。接著你的任務(wù)管理器將會(huì)變成類似圖一的樣子。
記住幾個(gè)占用內(nèi)存比較多的進(jìn)程各自使用的內(nèi)存數(shù)和虛擬內(nèi)存數(shù),然后使用內(nèi)存釋放軟件進(jìn)行釋放。本文將會(huì)使用微軟發(fā)布的Windows Server 2003 Resource Kit工具empty.exe,該工具前段時(shí)間在網(wǎng)上非常風(fēng)光,很多人都宣稱具有釋放空閑內(nèi)存的作用(雖然還有其他釋放內(nèi)存的工具,不過(guò)原理上都是一樣的)。運(yùn)行“empty *.*”,可以看到,在短時(shí)間內(nèi),之前占用了大量物理內(nèi)存的進(jìn)程占用的物理內(nèi)存數(shù)量都變得很少,而虛擬內(nèi)存用量增加了(圖二),但是這種現(xiàn)象只持續(xù)了很短的時(shí)間。馬上,這些進(jìn)程占用的物理內(nèi)存數(shù)量又開始回升了。
因此可以說(shuō),這類釋放內(nèi)存的軟件根本沒(méi)有太大作用。相反,有些軟件可以在內(nèi)存占用達(dá)到一定程序之后自動(dòng)釋放內(nèi)存,這可能會(huì)對(duì)本身就已經(jīng)很繁忙的計(jì)算機(jī)雪上加霜。想象這種情況,當(dāng)你內(nèi)存數(shù)量不多,而又運(yùn)行了比較大型的程序后,必然導(dǎo)致物理內(nèi)存數(shù)急劇減少,而在這種情況下所謂的“優(yōu)化軟件”開始自作聰明,把占用內(nèi)存的數(shù)據(jù)往硬盤上進(jìn)行分頁(yè),而程序的運(yùn)行需要這些數(shù)據(jù),這可能導(dǎo)致了在同一時(shí)間內(nèi),“優(yōu)化軟件”試圖將數(shù)據(jù)分頁(yè)到硬盤,而操作系統(tǒng)試圖將數(shù)據(jù)從硬盤讀取到內(nèi)存,極大增加了硬盤的讀寫。
其實(shí)在早期,這類程序還是有一定作用的,那時(shí)候主流的Windows 9x操作系統(tǒng)本身在內(nèi)存管理上存在問(wèn)題,而且有些設(shè)計(jì)不嚴(yán)謹(jǐn)?shù)某绦蛞部赡艽嬖趦?nèi)存泄露的Bug,因此這類軟件應(yīng)運(yùn)而生。但是現(xiàn)在基于NT技術(shù)的Windows操作系統(tǒng)在內(nèi)存管理上得到了極大提高,同時(shí)大部分軟件的設(shè)計(jì)也越來(lái)越合理,因此我們完全可以和這類軟件說(shuō)再見了。
說(shuō)了這么多網(wǎng)上流傳的錯(cuò)誤觀點(diǎn),那么我們?cè)撛鯓釉O(shè)置才能達(dá)到最佳性能呢?
首先看看如何確定虛擬內(nèi)存的大小。在前面我們已經(jīng)說(shuō)過(guò)了,嚴(yán)格按照1.5-2倍的倍數(shù)關(guān)系來(lái)設(shè)置并不科學(xué),因此我們可以根據(jù)系統(tǒng)的實(shí)際應(yīng)用情況進(jìn)行設(shè)置。在這過(guò)程中需要用到Windows 2000/XP Pro/2003自帶的性能監(jiān)視器。
運(yùn)行“perfmon.msc”打開性能監(jiān)視器,展開左側(cè)的性能日志和警報(bào),并點(diǎn)擊選擇記數(shù)器日志,在右側(cè)的面板中空白處點(diǎn)擊鼠標(biāo)右鍵,選擇新建日志設(shè)置,并命名為Pagefile,然后回車確認(rèn),然后會(huì)出現(xiàn)圖三所示的窗口。
在常規(guī)選項(xiàng)卡下,點(diǎn)擊添加記數(shù)器按鈕,在新彈出的窗口的性能對(duì)象下拉菜單中選擇Paging File,并選擇“從列表選擇記數(shù)器”,然后點(diǎn)擊% Usage Peak,在范例中選擇“_Total”,并接著點(diǎn)擊“添加”按鈕,完成的設(shè)置應(yīng)該跟圖四一樣。
然后關(guān)閉這個(gè)窗口,并點(diǎn)擊圖三中的“確定”按鈕。點(diǎn)擊“是”創(chuàng)建日志
這樣,點(diǎn)擊確定后這個(gè)記數(shù)器已經(jīng)開始運(yùn)行了,你可以在電腦上進(jìn)行你的日常操作,并盡可能多的打開和關(guān)閉各種經(jīng)常使用的應(yīng)用程序和游戲。經(jīng)過(guò)幾個(gè)小時(shí)的使用,基本上記數(shù)器已經(jīng)可以對(duì)你的使用情況做出一個(gè)完整的評(píng)估。
這時(shí)你需要先停止這個(gè)記數(shù)器的運(yùn)行,同樣是在記數(shù)器日志窗口中,選中我們新建的Page File記數(shù)器,然后右鍵點(diǎn)擊,并且選擇停止。用記事本打開日志文件,你看到的結(jié)果應(yīng)該跟圖六類似。我們根據(jù)這幅圖一起來(lái)分析一下分頁(yè)文件的使用。
需要注意的是,在日志中的數(shù)值并不是分頁(yè)文件的使用量,而是使用率。也就是說(shuō),根據(jù)日志文件的顯示,該系統(tǒng)一般情況下的分頁(yè)文件只使用了25%左右,而系統(tǒng)當(dāng)前設(shè)置的分頁(yè)文件足有2GB,那么為了節(jié)省硬盤空間,完全可以把分頁(yè)文件最大值縮小為512MB大小。而對(duì)于最小值,可以先根據(jù)日志中的占用率求出平均占用率,然后再與最大值相乘,就可以得到了。
在設(shè)置虛擬內(nèi)存的時(shí)候還需要注意,如果你有超過(guò)一塊硬盤,那么最好能把分頁(yè)文件設(shè)置在沒(méi)有安裝操作系統(tǒng)或應(yīng)用程序的硬盤上,或者所有硬盤中速度最快的硬盤上。這樣在系統(tǒng)繁忙的時(shí)候才不會(huì)產(chǎn)生同一個(gè)硬盤既忙于讀取應(yīng)用程序的數(shù)據(jù)又同時(shí)進(jìn)行分頁(yè)操作的情況。相反,如果應(yīng)用程序和分頁(yè)文件在不同的硬盤上,這樣才能最大程度降低硬盤利用率,同時(shí)提高效率。當(dāng)然,如果你只有一個(gè)硬盤,就完全沒(méi)必要將分頁(yè)文件設(shè)置在其他分區(qū)了,同一個(gè)硬盤上不管設(shè)置在哪個(gè)分區(qū)中,對(duì)性能的影響都不是很大。
虛擬內(nèi)存的設(shè)置并不麻煩,但是要用好虛擬內(nèi)存卻還有很多事情需要注意。
我們已經(jīng)知道,操作系統(tǒng)運(yùn)行的過(guò)程中會(huì)把內(nèi)存中的一些數(shù)據(jù)分頁(yè)到硬盤上,但是默認(rèn)情況下,系統(tǒng)關(guān)閉的時(shí)候,這些數(shù)據(jù)并不會(huì)被自動(dòng)刪除。因此,如果你在電腦上處理了機(jī)密數(shù)據(jù),隨后你可能使用加密,或者將數(shù)據(jù)轉(zhuǎn)移到其他介質(zhì)上的方法保證了其他人無(wú)法讀取機(jī)密文件的內(nèi)容。但是你可能忘了,在分頁(yè)文件中可能還遺留有該文件的某些數(shù)據(jù),而借助專用的程序,任何人都可以分析分頁(yè)文件,從中讀出保存的數(shù)據(jù)。因此為了實(shí)現(xiàn)最大程度的安全,我們最好通過(guò)設(shè)置讓W(xué)indows在關(guān)閉的時(shí)候自動(dòng)刪除分頁(yè)文件(這不是一般意義的刪除,而是使用無(wú)意義的數(shù)據(jù)填充整個(gè)分頁(yè)文件,這樣即便使用反刪除軟件也無(wú)法恢復(fù))。運(yùn)行Gpedit.msc打開組策略編輯器,在左側(cè)面板中定位到“計(jì)算機(jī)配置/Windows設(shè)置/安全設(shè)置/本地策略/安全選項(xiàng)”,然后啟用右側(cè)面板中“關(guān)機(jī):清理虛擬內(nèi)存頁(yè)面文件”這一策略。不過(guò)要注意,啟用該策略將會(huì)延長(zhǎng)Windows關(guān)閉所需的時(shí)間,因此如果不是必要請(qǐng)不要啟用該策略。
我們都知道硬盤使用時(shí)間長(zhǎng)了將會(huì)出安生文件碎片,而碎片太多就會(huì)影響運(yùn)行效率,因此最佳做法是定時(shí)整理硬盤碎片。不過(guò)你可能不知道,因?yàn)樵赪indows運(yùn)行的情況下pagefile.sys文件會(huì)被鎖定,因此該文件中的碎片并不會(huì)被整理。要整理分頁(yè)文件中的碎片,我們有三種方法。
第一種方法雖然不需要任何額外的工具,不過(guò)操作上有點(diǎn)麻煩。假設(shè)你的操作系統(tǒng)和分頁(yè)文件都位于C盤,首先請(qǐng)將分頁(yè)文件移動(dòng)到D盤或者E盤等非系統(tǒng)盤(為使設(shè)置生效,設(shè)置好之后需要重啟動(dòng)系統(tǒng))。然后使用Windows自帶的磁盤碎片整理程序?qū)盤整理磁盤碎片,你可能需要多次整理才能完成的比較徹底。待整理完之后重新將分頁(yè)文件設(shè)置到C盤,因?yàn)镃盤已經(jīng)進(jìn)行過(guò)了完整的碎片整理,因此重新在C盤創(chuàng)建的分頁(yè)文件將會(huì)是連續(xù)的,也就避免了碎片的產(chǎn)生。
第二種方法使用簡(jiǎn)單,但是需要借助其他軟件。這里我們使用的是一個(gè)叫“PageDefrag”的免費(fèi)軟件。該軟件可以在這里下載:http://www.sysinternals.com/Utilities/PageDefrag.html ,運(yùn)行之后將會(huì)看到圖七所示界面。從圖中可以看到,不僅pagefile.sys,該軟件還可以整理很多其他平時(shí)因?yàn)楸幌到y(tǒng)鎖定而無(wú)法整理的系統(tǒng)文件。由于軟件不能在系統(tǒng)運(yùn)行的時(shí)候?qū)Ψ猪?yè)文件進(jìn)行獨(dú)占性訪問(wèn),因此整理工作會(huì)在下一次啟動(dòng)系統(tǒng)的時(shí)候進(jìn)行。你可以按照需要,設(shè)置下次啟動(dòng)時(shí)整理(Defragment at next boot),或者每次啟動(dòng)時(shí)整理(Defragment every boot)。
最后,如果你使用第三方的磁盤碎片整理軟件,例如O&O Defrag,那么這類軟件自帶的Offline Defrag(脫機(jī)整理,或者其他類似的稱呼)也可以在系統(tǒng)重啟動(dòng)的時(shí)候整理這些被鎖定的系統(tǒng)文件。