走出虛擬記憶體禁(轉)

RegisterForBlog發表於2007-08-10
走出虛擬記憶體禁(轉)[@more@]

  最近大家都經常談論的話題,就是DDR記憶體的大降價,DDR266從400多元的位置暴跌到200元左右,很多人都用上了512MB甚至1GB的記憶體,於是有一種觀點也在部分玩家中流行起來,說是禁用虛擬記憶體、禁止Windows頁面檔案交換、強行命令資料在記憶體中處理,可以加快資料讀寫效率,是不是真的這樣呢?

  

  根據應用需要設定

  

  筆者認為,這種說法要分情況對待,不能隨便就說禁用是好事。

  

  首先,要搞清楚什麼是“大記憶體”配置。當初設計Windows使用虛擬記憶體本身是因為實體記憶體很貴,一般都不會超過128MB容量,需要硬碟空間作臨時緩衝――也就是說,你應該把應用時需要多少實體記憶體和自己實際擁有的記憶體作一個比較,如果實際擁有的記憶體少於應用峰值,就會遇到麻煩了。

  

  一般來說,如果要進行平面大圖、3D動畫渲染等資料量很大的任務,不應禁用虛擬記憶體;如果經常要列印帶大量圖片的文件,禁止虛擬記憶體也會讓程式出現錯誤。因為像Word一類軟體列印之前要生成緩衝檔案,再傳輸到印表機上,圖片尺寸較大、解析度較高時,需要的緩衝區容量也很大,筆者以前幫助廣告美工出設計圖時,就遇到列印一張圖生成將近300MB臨時檔案的情況。因為Windows和應用程式本身也是需要一定記憶體來執行的,如果你是512MB的配置,禁用了虛擬記憶體,很有可能中途報告虛擬記憶體不足,強行退出造成列印紙張及油墨的浪費。

  

  所以,必須根據你的任務應用環境,來決定是否禁用虛擬記憶體。即使是把虛擬記憶體大小固定設定,也必須謹慎,否則在執行大型應用軟體的時候才出現虛擬記憶體不足的提示,整個系統會因為CPU的佔用率極高而變得很慢,此時再改動就沒那麼方便了。

  

  考慮作業系統的因素

  

  在不同的作業系統下,虛擬記憶體的設定或禁用也是不同的,不能一概而論。

  

  因為架構問題,Windows 9x/Me對大於256MB的記憶體有先天的不足,大於這個數量的記憶體,Windows 98會出現不穩定及啟動速度變慢的情況。如果使用了大記憶體加上禁用虛擬記憶體,不穩定的因素將會進一步增加。Windows 2000/XP可有效管理的記憶體容量為1GB左右,大於這個數目也會出現不穩定的情況,而且視主機板BIOS型號及晶片組效能而不同。

  

  另外,Windows本身的設計就是,一旦發現有程式轉入不活躍狀態,就會把分配給它的記憶體空間對映到交換檔案中,儘可能空出實體記憶體給其它活動的執行緒,並不是用完實體記憶體才開始動用交換檔案。因為如果等到實體記憶體用完再呼叫,就已經太遲了,在配置較低的機器上勢必造成資料傳輸和處理停滯。所以禁止虛擬記憶體從原則上來講,最容易引起Windows異常,即使不出現執行不了的故障,也會頻繁地提示虛擬記憶體不夠,請重新設定云云,讓你不勝其煩。

  

  如何禁用虛擬記憶體

  

  對於擁有很大容量記憶體的朋友,如果真想禁用虛擬記憶體加快執行速度,其實可以用折中的辦法“騙”過Windows,就是把實體記憶體劃出一部分來虛擬成物理硬碟:

  

  1.Windows 98

  

  可以在Config.sys里加入一句:

  

  DEVICE=C:WINDOWSRAMDRIVE.SYS 23000 /E(請根據自己的Windows所在分割槽適當設定)

  

  這句話就是利用記憶體由Ramdrive.sys虛擬出一個分割槽,其中23000是你希望使用多少實體記憶體,單位是KB,如果你有1GB,可以把這個數字設到300000到500000左右,即300~500MB,然後把虛擬記憶體設定到該虛擬出的分割槽上,程式就完全在實體記憶體中執行了。

  

  2.Windows 2000/XP

  

  必須依靠第三方的工具軟體來虛擬物理硬碟,然後再把Pagefile.sys頁面檔案設到該虛擬盤上,實現同樣效果;或者可在System.ini中的“[386enh]”底部加入一句,ConservativeSwapfileUsage=1,讓Windows優先使用實體記憶體,儘量不要強行直接禁用虛擬記憶體交換檔案。

  

  結論

  

  筆者認為,禁用虛擬記憶體達到的加速效果很有限,加上一般Windows的預設設定比較適當,尤其是Windows 2000/XP預設設定對虛擬記憶體的管理很好,儘量不要隨意更改,否則出了問題你很難判斷和分析。

  

  題外話:有關記憶體的一些故障分析

  

  有時,Windows出現一些和記憶體有關的故障提示,不一定是和記憶體有關;而一些看似和記憶體無關的故障,卻真是記憶體引起的,很有隱蔽性。

  

  比如:你用PQ分割槽大師之類的工具改過分割槽簇的大小,當簇小於預設值時,Windows 98執行磁碟掃描就可能會報記憶體不足,而在Windows 2000和Windows XP下則正常――也就是說,這跟記憶體根本沒關係。

  

  再比如:有時開機進入Windows時,系統會提示你登錄檔錯誤,是否恢復,當你選恢復後,再次重啟,還是同一個提示,這種故障,卻多半是記憶體條或散熱方面出了問題引起的,需要更換記憶體或是風扇了。

  

  所以,Windows的提示有時會誤導使用者,如果反覆出現同一種故障,按其提示解決不了,應考慮Windows誤報的可能性。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10763080/viewspace-942408/,如需轉載,請註明出處,否則將追究法律責任。

相關文章