很多年來我們都習慣了這樣一條結論,空閑內存越多Windows就會越快,于是在該思路的“光輝指引”下,很多網友都安裝了所謂的內存優化器,有事沒事也要點擊兩下??粗M度條瞬間變長,似乎一下子找到了心里安慰(嗯!電腦又快了,又快了……)。然而事實真的如此么?
很可惜,在嘗試了N款內存優化軟件后,筆者沮喪地發現自己的電腦非但沒快,反而比以前更遲鈍了,具體表現就是很多軟件的載入時間明顯加長。聽著硬盤呲牙 咧嘴地怪叫,俺不禁在想,究竟是內存軟件出了問題?還是這條廣為傳頌的“優化秘籍”坑了爹?而這便是本期流言終結者即將討論的話題——空閑內存真的能讓電 腦變快么?
圖1 空閑內存越多,電腦越快么?
一. 快速通道
對于目前主流的Win7或Win8系統來說,只要不是內存低得離譜(1GB以下),任何情況下都不應使用內存優化軟件,更不要試圖關閉 SuperPrefetch服務。因為現代系統的一個目標就是不讓內存白白空閑,它會利用一切可以利用的空閑空間來為軟件加速。不要擔心你的內存小會不適 合開啟SuperPrefetch,系統會根據物理內存自動調整用量。一句話,內存大多用些,內存小少用些!
二. 完整通道
1. 誰占了我的內存?
回答這個問題前咱們先來看一看,在一款正常系統中究竟是誰占據了大量內存。眾所周知,內存是電腦中運行軟件的必經場所,因此這里的一個大頭就是各類運行 中的軟件。除此之外,系統進程、驅動程序也會占據不少的內存,堪稱內存占用的第二把交椅。那么老三呢?沒錯!就是時下各類商業軟件的自啟動模塊,隨著這兩 年商業競爭日趨激烈,很多廠商都想在操作系統中插上一腳,以免稀里糊涂地被別的對手“擠掉”!
那么除此之外,我們的內存是否可以清靜了呢?別急!咱們先來回顧一下Windows的歷史。
2001年一款全新的操作系統誕生于世,這就是其后影響巨大的WinXP。和先前的9X系統相比,XP增加了很多新功能,其中一條最吸引人的就是號稱文件預讀取的“Prefetch”。
嚴格來說Prefetch本身就是一項系統優化技術,通過監視用戶操作,將一些最常用文件預讀到內存,由此來加快常用軟件的啟動速度。也正是從這時開 始,256MB、512MB等大容量內存(嗯,在當時還是挺大的~)開始進入裝機用戶配置單,很多電腦壓根兒用不到如此大的空間,內存閑置率的激增最終促 使了微軟一改沿用多年的內存管理思路——由原來的“盡量空出內存”到“別讓內存白白閑著”。
圖2 XP的Prefetch
2007年的Vista發布可以算是微軟的又一次里程碑,雖然按現在的眼光來看,Vista無論銷售情況還是用戶口碑都不盡如人意,但它卻開創了很多全新思路 。
在Vista系統中,你會發現內存的占用非常之大,原本可以讓XP運行爽爽的512M內存根本跑不起它,甚至1GB內存也不過給你留個100~200MB照顧一下面子。而導致這一結果的最根本原因,就是全新加入的——SuperPrefetch。
SuperPrefetch是Prefetch的升級版,最大變化就是能夠智能化實現預讀。舉個例子吧,假如你每天都是中午12:00吃飯,下午1:00開機直接打開Word,那么幾次后Vista便會熟悉這一規律,下午開機直接將Word預讀到內存以加快啟動速度。
正是由于這個原理,Vista中的內存大部分被預讀文件所“吃掉”,這也就是為何Vista空閑內存較少,但軟件啟動卻很快的原因。
圖3 SuperFetch
2. 清理內存值得么?
看到這兒大家也許明白,雖然Vista(Win7、Win8同理)的內存占用看似很大,但與9X時代已經不可同日而語,大量預讀文件非但沒有讓系統變慢,反而加快了日常軟件的啟動速度。
那么如果我們通過內存回收器清理一下內存呢?很明顯,人家費了半天勁兒積累好的緩存被你一下給刪除了,軟件啟動自然變慢。
圖4 盲目“整理”不可??!
如果你不信上面的分析,不妨來做下面這個小試驗,分別用秒表計量Win8原始狀態與清除SuperPrefetch緩存后(SuperPrefetch 服務同時關閉)的軟件啟動用時,然后放到一起進行對比。幾分鐘后你便明白,取消SuperPrefetch以及使用內存整理器該是一件多么愚蠢的事兒了。
圖5 關閉SuperPrefetch前后啟動用時對比
3. 內存會撐爆么?
雖然剛才的測試抵消了一部分人的疑惑,但我相信肯定還有網友顧忌另一個問題,那就是剩余內存還夠不夠軟件使用。不可否認,并不是每一位用戶都有著令人艷 羨的配置,很多幾年前甚至十幾年前的電腦依然還在超期服役。他們完全有理由問一句,如果內存都被SuperPrefetch占據,那么軟件又該去哪里運 行?
其實這個問題早已在微軟的考慮范圍之內,如果大家仔細觀察的話,就會發現這樣一個特點,那就是操作系統能夠根據物理內存自動調整占用。一句話,你的內存大它就多占些,你的內存小它就少占些,總之系統會自動在工作效率與軟件運行間達成一個平衡。
測試中我們選取了三臺電腦,其中變化的只有內存容量,一個是已經過氣的1GB內存,另一個是相對主流的2GB內存,第三個則是有點變態的512MB內存。一般來說512MB內存是不建議安裝Win8的,但為了給大家一個直觀的印象,俺還是頂著壓力上了。
圖6 不同物理內存Win8占用對比
最終結果一目了然,可以看到無論是面對三臺電腦中的哪一個,Win8都為其預留了足夠空間,以保證軟件正常運行。尤其是第三組512MB內存,雖然Win8自身的運行已經非常緩慢,但依然可以正常完成用戶交給的任務。
在筆者一個多小時的運行之中,除了感覺速度慢些,并沒有發生系統出錯甚至崩潰現象。應該說這樣的表現,早已超出了筆者的預料。
圖7 虛擬內存也是有益補充
此外另一個幾被大家忽視的問題,就是XP時代還很火熱的虛擬內存,很多用戶都希望將它關閉以節約磁盤占用。但請不要忽略這點,如果你的內存不大(2GB 以下),最好還是交由Windows自行管理。因為一旦碰上個讓內存飆升的大家伙(比如3ds Max、VMWare等),再強悍的系統也只能望“存”興嘆,一個出錯提示就會搞掉之前所有打開的軟件,保不齊再來個數據丟失,不值得呀!
寫在最后
空閑內存越小運行越快,相信這樣的結論肯定顛覆了很多人的眼球。但事實勝于雄辯,隨著Vista、Win7、Win8等新一代操作系統的流行,內存空閑率早已不是決定系統快慢的主要原因。
當然這樣說,并不意味著新裝機系統都無需優化,事實上即便是最新款的Windows8,也沒有實現根據用戶使用環境智能分配資源,很多基礎服務都是普通 用戶所不需要的。禁用無用服務,不但可以提高系統啟動速度,還能節省內存資源,而這樣做的實際意義要遠比刪除個SuperPrefetch服務實用得多!
幾個問題解答——
1. Superfetch會讓筆記本更費電么?
筆記本用戶可能對這個問題比較關注,既然SuperPrefetch的原理是將文件提前讀入內存,那么自然會增加硬盤訪問,頻繁的讀寫是否會讓筆記本更費電呢?
其實這個問題我們不妨換個思路,假如電腦關閉了SuperPrefetch,那么運行軟件時是否需要讀取同樣的硬盤數據?兩者相比,一個節省了啟動時間讀取硬盤,另一個沒有節省啟動時間也要讀取硬盤,孰優孰劣相信大家已經一目了然。
2. SSD設備是否需要SuperPrefetch?
隨著SSD逐漸走下王壇,這個問題也開始被大家關注。筆者認為SuperPrefetch的最終目標是在低速的機械硬盤與高速的物理內存間建立一個“緩沖區”,而且這個緩沖區還兼有解決機械硬盤隨機讀取慢的作用。
相比之下SSD在隨機讀寫速度上早已不是問題,SuperPrefetch實際上已經起不到應有的作用。再者由于SSD普遍存在的壽命問題,建議SSD用戶還是關閉SuperPrefetch為好!
3. SuperPrefetch是否會和普通軟件搶資源?
有網友認為SuperPrefetch會導致硬盤無故狂轉,因此在SuperPrefetch工作時其他軟件的運行就會變慢。沒錯!很多在Win7或者 Win8系統上見到的硬盤狂轉(當然也可能是其他服務,如索引服務等)都和SuperPrefetch有關系!但筆者想說的是,從Vista時代開始,微 軟就引入了一項I/O優先級概念,其中一些非實時性系統組件默認都是采用低優先級的。
這句話的一般概述就是,當用戶程序工作時SuperPrefetch會自動給其讓道,絕對不會有爭搶資源的現象。當然硬盤狂轉確實不那么討人喜歡,不過為了系統性能,忍了吧!