虛擬記憶體

虛擬記憶體

虛擬記憶體計算機系統記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的記憶體(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理記憶體碎片,還有部分暫時存儲在外部磁碟存儲器上,在需要時進行數據交換。目前,大多數作業系統都使用了虛擬記憶體,如Windows家族的“虛擬記憶體”;Linux的“交換空間”等。

Windows 8/8.1 作業系統如出現開機時卡在Windows徽標頁面,無法進入系統,必須強制關機再重啟才能打開時,可適當調整虛擬記憶體設定解決。

基本介紹

  • 中文名:虛擬記憶體
  • 外文名:Virtual Memory
  • 別稱:虛擬存儲器
  • 類別:計算機系統記憶體管理
  • 存在形式:PAGEFILE.SYS
  • 作業系統:Windows
技術介紹,工作原理,虛實地址,異構體系,關鍵問題,調度介紹,頁式調度,段式調度,段頁式調度,變換算法,記憶體不足,合理設定,新手篇,老手篇,相關信息,設定方法,注意事項,禁用頁面檔案,清空頁面檔案,關機自動清除,使用技巧,

技術介紹

虛擬記憶體別稱虛擬存儲器(Virtual Memory)。電腦中所運行的程式均需經由記憶體執行,若執行的程式占用記憶體很大或很多,則會導致記憶體消耗殆盡。為解決該問題,Windows中運用了虛擬記憶體技術,即勻出一部分硬碟空間來充當記憶體使用。當記憶體耗盡時,電腦就會自動調用硬碟來充當記憶體,以緩解記憶體的緊張。若計算機運行程式或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。它將計算機的RAM硬碟上的臨時空間組合。當RAM運行速率緩慢時,它便將數據從RAM移動到稱為“分頁檔案”的空間中。將數據移入分頁檔案可釋放RAM,以便完成工作。 一般而言,計算機的RAM容量越大,程式運行得越快。若計算機的速率由於RAM可用空間匱乏而減緩,則可嘗試通過增加虛擬記憶體來進行補償。但是,計算機從RAM讀取數據的速率要比從硬碟讀取數據的速率快,因而擴增RAM容量(可加記憶體條)是最佳選擇。
虛擬記憶體
虛擬記憶體是Windows 為作為記憶體使用的一部分硬碟空間。虛擬記憶體在硬碟上其實就是為一個碩大無比的檔案,檔案名稱是PageFile.Sys,通常狀態下是看不到的。必須關閉資源管理器對系統檔案的保護功能才能看到這個檔案。虛擬記憶體有時候也被稱為是“頁面檔案”就是從這個檔案的檔案名稱中來的。
記憶體在計算機中的作用很大,電腦中所有運行的程式都需要經過記憶體來執行,如果執行的程式很大或很多,就會導致記憶體消耗殆盡。為了解決這個問題,WINDOWS運用了虛擬記憶體技術,即拿出一部分硬碟空間來充當記憶體使用,這部分空間即稱為虛擬記憶體,虛擬記憶體在硬碟上的存在形式就是 PAGEFILE.SYS這個頁面檔案。

工作原理

虛擬存儲器是由硬體和作業系統自動實現存儲信息調度和管理的。它的工作過程包括6個步驟:
中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。
②如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閒區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。
③從輔存讀出所要的組,並送到主存空閒區,然後將那個空閒的物理組號a和邏輯組號a登錄在地址變換表中。
④從地址變換表讀出與邏輯組號a對應的物理組號a。
⑤從物理組號a和組內位元組地址b得到物理地址。
⑥根據物理地址從主存中存取必要的信息。
調度方式有分頁式、段式、段頁式3種。頁式調度是將邏輯和物理地址空間都分成固定大小的頁。主存按頁順序編號,而每個獨立編址的程式空間有自己的頁號順序,通過調度輔存中程式的各頁可以離散裝入主存中不同的頁面位置,並可據表一一對應檢索。頁式調度的優點是頁內零頭小,頁表對程式設計師來說是透明的,地址變換快,調入操作簡單;缺點是各頁不是程式的獨立模組,不便於實現程式和數據的保護。段式調度是按程式的邏輯結構劃分地址空間,段的長度是隨意的,並且允許伸長,它的優點是消除了記憶體零頭,易於實現存儲保護,便於程式動態裝配;缺點是調入操作複雜。將這兩種方法結合起來便構成段頁式調度。在段頁式調度中把物理空間分成頁,程式按模組分段,每個段再分成與物理空間頁同樣小的頁面。段頁式調度綜合了段式和頁式的優點。其缺點是增加了硬體成本,軟體也較複雜。大型通用計算機系統多數採用段頁式調度。

虛實地址

實地址與虛地址
用戶編製程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理記憶體的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程式進行虛地址到實地址轉換的過程稱為程式的再定位。
虛存的訪問過程
虛存空間的用戶程式按照虛地址編程並存放在輔存中。程式運行時,由地址變換機構依據當時分配給該程式的實地址空間把程式的一部分調入實存。每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種算法將輔存中的部分程式調度進記憶體,再按同樣的方法訪問主存。由此可見,每個程式的虛地址空間可以遠大於實地址空間,也可以遠小於實地址空間。前一種情況以提高存儲容量為目的,後一種情況則以地址變換為目的。後者通常出現在多用戶或多任務系統中:實存空間較大,而單個任務並不需要很大的地址空間,較小的虛存空間則可以縮短指令地址欄位的長度。

異構體系

從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬體和輔助軟硬體負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。cache和主存構成了系統的記憶體,而主存和輔存依靠輔助軟硬體的支持構成了虛擬存儲器。
在三級存儲體系中,cache-主存和主存-輔存這兩個存儲層次有許多相同點:
(1)出發點相同:二者都是為了提高存儲系統的性能價格比而構造的分層存儲體系,都力圖使存儲系統的性能接近高速存儲器,而價格和容量接近低速存儲器。
(2)原理相同:都是利用了程式運行時的局部性原理把最近常用的信息塊從相對慢速而大容量的存儲器調入相對高速而小容量的存儲器。
但cache-主存和主存-輔存這兩個存儲層次也有許多不同之處:
(1)側重點不同:cache主要解決主存與CPU的速度差異問題;而就性能價格比的提高而言,虛存主要是解決存儲容量問題,另外還包括存儲管理、主存分配和存儲保護等方面。
(2)數據通路不同:CPU與cache和主存之間均有直接訪問通路,cache不命中時可直接訪問主存;而虛存所依賴的輔存與CPU之間不存在直接的數據通路,當主存不命中時只能通過調頁解決,CPU最終還是要訪問主存。
(3)透明性不同:cache的管理完全由硬體完成,對系統程式設計師和應用程式員均透明;而虛存管理由軟體(作業系統)和硬體共同完成,由於軟體的介入,虛存對實現存儲管理的系統程式設計師不透明,而只對應用程式員透明(段式和段頁式管理對應用程式員“半透明”)。
(4)未命中時的損失不同:由於主存的存取時間是cache的存取時間的5~10倍,而主存的存取速度通常比輔存的存取速度快上千倍,故主存未命中時系統的性能損失要遠大於cache未命中時的損失。

關鍵問題

(1)調度問題:決定哪些程式和數據應被調入主存。
(2)地址映射問題:在訪問主存時把虛地址變為主存物理地址(這一過程稱為內地址變換);在訪問輔存時把虛地址變成輔存的物理地址(這一過程稱為外地址變換),以便換頁。此外還要解決主存分配、存儲保護與程式再定位等問題。
(3)替換問題:決定哪些程式和數據應被調出主存。
(4)更新問題:確保主存與輔存的一致性。
在作業系統的控制下,硬體和系統軟體為用戶解決了上述問題,從而使應用程式的編程大大簡化。

調度介紹

頁式調度

1、頁式虛存地址映射頁式虛擬存儲系統中,虛地址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為物理頁。相應地,虛地址分為兩個欄位:高欄位為邏輯頁號,低欄位為頁內地址(偏移量);實存地址也分兩個欄位:高欄位為物理頁號,低欄位為頁內地址。通過頁表可以把虛地址(邏輯地址)轉換成物理地址。
在大多數系統中,每個進程對應一個頁表。頁表中對應每一個虛存頁面有一個表項,表項的內容包含該虛存頁面所在的主存頁面的地址(物理頁號),以及指示該邏輯頁是否已調入主存的有效位。地址變換時,用邏輯頁號作為頁表內的偏移地址索引頁表(將虛頁號看作頁表數組下標)並找到相應物理頁號,用物理頁號作為實存地址的高欄位,再與虛地址的頁內偏移量拼接,就構成完整的物理地址。現代的中央處理機通常有專門的硬體支持地址變換。
2、轉換後援緩衝器由於頁表通常在主存中,因而即使邏輯頁已經在主存中,也至少要訪問兩次物理存儲器才能實現一次訪存,這將使虛擬存儲器的存取時間加倍。為了避免對主存訪問次數的增多,可以對頁表本身實行二級快取,把頁表中的最活躍的部分存放在高速存儲器中,組成快表。這個專用於頁表快取的高速存儲部件通常稱為轉換後援緩衝器(TLB)。保存在主存中的完整頁表則稱為慢表。
3、內頁表是虛地址到主存物理地址的變換表,通常稱為內頁表。與內頁表對應的還有外頁表,用於虛地址與輔存地址之間的變換。當主存缺頁時,調頁操作首先要定位輔存,而外頁表的結構與輔存的定址機制密切相關。例如對磁碟而言,輔存地址包括磁碟機號、磁頭號、磁軌號和扇區號等。

段式調度

段是按照程式的自然分界劃分的長度可以動態改變的區域。通常,程式設計師把子程式、運算元和常數等不同類型的數據劃分到不同的段中,並且每個程式可以有多個相同類型的段。在段式虛擬存儲系統中,虛地址由段號和段內地址(偏移量)組成。虛地址到實主存地址的變換通過段表實現。每個程式設定一個段表,段表的每一個表項對應一個段。每個表項至少包含下面三個欄位:
(1)有效位:指明該段是否已經調入實存。
(2)段起址:指明在該段已經調入實存的情況下,該段在實存中的首地址。
(3)段長:記錄該段的實際長度。設定段長欄位的目的是為了保證訪問某段的地址空間時,段內地址不會超出該段長度導致地址越界而破壞其他段。段表本身也是一個段,可以存在輔存中,但一般駐留在主存中。
段式虛擬存儲器有許多優點:
①段的邏輯獨立性使其易於編譯、管理、修改和保護,也便於多道程式共享。②段長可以根據需要動態改變,允許自由調度,以便有效利用主存空間。段式虛擬存儲器也有一些缺點:
①因為段的長度不固定,主存空間分配比較麻煩。②容易在段間留下許多外碎片,造成存儲空間利用率降低。
③由於段長不一定是2的整數次冪,因而不能簡單地像分頁方式那樣用虛地址和實地址的最低若干二進制位作為段內偏移量,並與段號進行直接拼接,必須用加法操作通過段起址與段內偏移量的求和運算求得物理地址。因此,段式存儲管理比頁式存儲管理方式需要更多的硬體支持。

段頁式調度

段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結合。實存被等分成頁。每個程式則先按邏輯結構分段,每段再按照實存的頁大小分頁,程式按頁進行調入和調出操作,但可按段進行編程、保護和共享。它把程式按邏輯單位分段以後,再把每段分成固定大小的頁。程式對主存的調入調出是按頁面進行的,但它又可以按段實現共享和保護,兼備頁式和段式的優點。缺點是在映象過程中需要多次查表。在段頁式虛擬存儲系統中,每道程式是通過一個段表和一組頁表來進行定位的。段表中的每個表目對應一個段,每個表目有一個指向該段的頁表起始地址及該段的控制保護信息。由頁表指明該段各頁在主存中的位置以及是否已裝入、已修改等狀態信息。如果有多個用戶在機器上運行,多道程式的每一道需要一個基號,由它指明該道程式的段表起始地址。虛擬地址格式如下:
基號 段號 頁號 頁內地址

變換算法

虛擬存儲器地址變換基本上有3種形虛擬存儲器工作過程式:全聯想變換、直接變換和組聯想變換。任何邏輯空間頁面能夠變換到物理空間任何頁面位置的方式稱為全聯想變換。每個邏輯空間頁面只能變換到物理空間一個特定頁面的方式稱為直接變換。組聯想變換是指各組之間是直接變換,而組內各頁間則是全聯想變換。替換規則用來確定替換主存中哪一部分,以便騰空部分主存,存放來自輔存要調入的那部分內容。常見的替換算法有4種。
①隨機算法:用軟體或硬體隨機數產生器確定替換的頁面。
②先進先出:先調入主存的頁面先替換。
③近期最少使用算法(LRU,Least Recently Used):替換最長時間不用的頁面。
④最優算法:替換最長時間以後才使用的頁面。這是理想化的算法,只能作為衡量其他各種算法優劣的標準。
虛擬存儲器的效率是系統性能評價的重要內容,它與主存容量、頁面大小、命中率,程式局部性和替換算法等因素有關。[

記憶體不足

【1】、感染病毒:有些病毒發作時會占用大量記憶體空間,導致系統出現記憶體不足問題。
【2】、虛擬記憶體設定不當:通常,應設定為物理記憶體大小的2倍。若設定過小,則會影響系統程式的正常運行。此時便需重設虛擬記憶體數值,以“Windows XP”為例,右擊“我的電腦”,選擇“屬性”,在“高級”標籤頁點擊“性能”框中的“設定”按鈕,切換至“高級”標籤頁,後在“虛擬記憶體”框中點擊“更改”按鈕,接著重設虛擬記憶體數值,再點“設定”並“確定”,完後重啟系統即可。
【3】、系統盤空間不足:在默認情況下,虛擬記憶體是以名為“Pagefile.sys”的交換檔案存於硬碟的系統分區中。若系統盤剩餘容量過小,即會出現該問題。系統盤至少應留有300MB的可用空間,當然此數值需據用戶的實際需要而定。儘量不要將各種套用軟體裝在系統盤,以保證有足夠的空間供虛擬記憶體檔案使用,且最好將虛擬記憶體檔案安放至非系統盤內。
【4】、System用戶許可權設定不當:基於NT核心的Windows系統啟動時,System用戶會為系統創建虛擬記憶體檔案。有些用戶為了系統的安全,採用NTFS檔案系統,但卻取消了System用戶在系統盤“寫入”和“修改”的許可權,這樣就無法為系統創建虛擬記憶體檔案,運行大型程式時,也會出現此類問題。對策:重新賦予System用戶“寫入”和“修改”的許可權即可。(註:該僅限於使用NTFS檔案系統的用戶。)

合理設定

如何確定虛擬記憶體大小?

新手篇

由系統或系統最佳化軟體分配或設定為物理記憶體的1.5-3倍。
相對於設定步驟複雜的Linux系統,Windows系統下對虛擬記憶體的設定比較簡單:
  1. 我的電腦圖示上單擊右鍵,選擇屬性
  2. 在系統屬性視窗中選擇高級,在性能區域中單擊設定按鈕。
  3. 在性能選項中選擇高級,在虛擬記憶體區域中單擊更改按鈕。
  4. 選擇一個比較空閒的分區用來存放虛擬記憶體的Pagefile.sys檔案。
  5. 在自定義大小區域中設定虛擬記憶體的大小為物理記憶體的1.5倍到3倍。

老手篇

事實上,嚴格按照1.5-3倍的倍數關係來設定並不科學,因此我們可以根據系統的實際套用情況進行設定。在這過程中需要用到Windows 2000/XP Pro/2003自帶的性能監視器
  1. 運行“perfmon.msc”打開性能監視器,展開左側的性能日誌和警報,並點擊選擇計數器日誌,在右側的面板中空白處點擊滑鼠右鍵,選擇新建日誌設定,並命名為Pagefile,然後回車確認。
  2. 在常規選項卡下,點擊添加計數器按鈕,在新彈出的視窗的性能對象下拉選單中選擇Paging File,並選擇“從列表選擇計數器”,然後點擊% Usage Peak,在範例中選擇“_Total”,並接著點擊“添加”按鈕。
  3. 然後關閉這個視窗,並點擊圖三中的“確定”按鈕。點擊“是”創建日誌檔案。接著打開“日誌檔案”選項卡,在日誌檔案類型下拉選單中選則“文本檔案(逗號分隔)”,然後記住“例如”框中顯示的日誌檔案的路徑。
  4. 這樣,點擊確定後這個計數器已經開始運行了,你可以在電腦上進行你的日常操作,並儘可能多的打開和關閉各種經常使用的應用程式和遊戲。經過幾個小時的使用,基本上計數器已經可以對你的使用情況做出一個完整的評估。
  5. 這時你需要先停止這個記數器的運行,同樣是在計數器日誌視窗中,選中我們新建的Page File記數器,然後右鍵點擊,並且選擇停止。用記事本打開日誌檔案
  6. 需要注意的是,在日誌中的數值並不是分頁檔案的使用量,而是使用率。也就是說,根據日誌檔案的顯示,該系統一般情況下的分頁檔案只使用了25%左右,而系統當前設定的分頁檔案足有2GB,那么為了節省硬碟空間,完全可以把分頁檔案最大值縮小為512MB大小。而對於最小值,可以先根據日誌中的占用率求出平均占用率,然後再與最大值相乘,就可以得到了。

相關信息

虛擬記憶體的位置
在設定虛擬記憶體的時候還需要注意,如果你有超過一塊硬碟,那么最好能把分頁檔案設定在沒有安裝作業系統應用程式的硬碟上,或者所有硬碟中速率最快的硬碟上。這樣在系統繁忙的時候才不會產生同一個硬碟既忙於讀取應用程式的數據又同時進行分頁操作的情況。相反,如果應用程式分頁檔案在不同的硬碟上,這樣才能最大程度降低硬碟利用率,同時提高效率。當然,如果你只有一個硬碟,那么把頁面檔案設定在其他分區,也不會有提高磁碟效率的效果。
虛擬記憶體頁面檔案與磁碟碎片
由於虛擬記憶體使用了硬碟,硬碟上非連續寫入的檔案會產生磁碟碎片,因此一旦用於實現虛擬記憶體的檔案或分區過於零碎,會加長硬碟的尋道時間,影響系統性能。有觀點誤認為Windows系統頻繁讀寫pagefile.sys就會產生磁碟碎片,實則不然。因為pagefile.sys檔案一旦創立,在分區中的分布連續形式就固定下來,檔案內部讀寫並不增加或減少pagefile.sys的檔案大小。僅當頁面檔案告罄後系統創建的temppf.sys會帶來磁碟碎片。 而在Linux系統中,將用於虛擬記憶體的部分置於單獨的分區中,不影響其他的分區或檔案,則基本杜絕了磁碟碎片帶來的影響。
虛擬記憶體太低的解決辦法
一般windowsXP默認情況下是利用C糟的剩餘空間來做虛擬記憶體的,因此,C糟的剩餘空間越大,對系統運行就越好,虛擬記憶體是隨著你的使用而動態地變化的,這樣C糟就容易產生磁碟碎片,影響系統運行速率,所以,最好將虛擬記憶體設定在其它分區,如D糟中。查看虛擬記憶體設定情況如下:
右鍵點“我的電腦”,左鍵點“屬性”,點選“高級”選項卡,點“性能”里的“設定”按鈕,再選“高級”選項卡,點下面的“更改”按鈕,所彈出的視窗就是虛擬記憶體設定視窗,一般默認的虛擬記憶體是從小到大的一段取值範圍,這就是虛擬記憶體變化大小的範圍,最好給它一個固定值,這樣就不容易產生磁碟碎片了,具體數值根據你的物理記憶體大小來定,一般為物理記憶體的1.5到3倍,如512M記憶體,可以設定256-768MB(記憶體+虛擬記憶體之和一般比正常占用高256MB即可)。1GB的記憶體的話,設為128-1024MB(記憶體+虛擬記憶體之和一般比正常占用高256-512MB即可),2GB記憶體以上的話,一般可以禁用虛擬記憶體了,部分確實會使用大量記憶體的人,如玩大型3D遊戲、製作大幅圖片、3D建模等,並收到系統記憶體不足警告的,才需要酌情設定虛擬記憶體,設定方法如下:
假設記憶體為256M,虛擬記憶體放在D糟,先要將默認的清除,保持C糟為選中狀態,單選“無分頁檔案(N)”再按“設定”按鈕,此時C糟旁的虛擬記憶體就消失了,然後選中D糟,單選“自定義大小”,在下面的“初始大小”和“最大值”兩個方框裡都添上512,再點一下“設定”按鈕,會看到D糟的旁邊出現了“512-512”的字樣,這樣就說明設定好了,再一路確定,最終,系統會要重新啟動,重啟一下,便完成了設定。

設定方法

手動設定
找出最合適的虛擬記憶體大小範圍值後,
①用右鍵點擊桌面上的“我的電腦”圖示,在出現的右鍵選單中選“屬性”選項打開“系統屬性”視窗。在視窗中點擊“高級”選項卡,出現高級設定的對話框
②點擊“性能”區域的“設定”按鈕,在出現的“性能選項”視窗中選擇“高級”選項卡,打開其對話框
③在該對話框中可看到關於虛擬記憶體的區域,點擊“更改”按鈕進入“虛擬記憶體”的設定視窗。選擇一個有較大空閒容量的分區,勾選“自定義大小”前的複選框,將具體數值填入“初始大小”、“最大值”欄中,而後依次點擊“設定→確定”按鈕即可,最後重新啟動計算機使虛擬記憶體設定生效。
調整分頁位置
Windows9x的虛擬記憶體分頁位置,其實就是保存在C糟根目錄下的一個虛擬記憶體檔案(也稱為交換檔案)Win386.swp,它的存放位置可以是任何一個分區,如果系統盤C容量有限,我們可以把Win386.swp調到別的分區中,方法是在記事本中打開System.ini(C:Windows下)檔案,在[386Enh]小節中,將“PagingDrive=C:WindowsWin386.swp”,改為其他分區的路徑,如將交換檔案放在D:中,則改為“PagingDrive=D:Win386.swp”,如沒有上述語句可以直接鍵入即可。
虛擬記憶體的顯示虛擬記憶體的顯示
而對於使用Windows2000和WindowsXP的,可以選擇“控制臺→系統→高級→性能”中的“設定→高級→更改”,打開虛擬記憶體設定視窗,在驅動器[卷標]中默認選擇的是系統所在的分區,如果想更改到其他分區中,首先要把原先的分區設定為無分頁檔案,然後再選擇其他分區。
或者,WinXP一般要求物理記憶體在256M以上。如果你喜歡玩大型3D遊戲,而記憶體(包括顯存)又不夠大,系統會經常提示說虛擬記憶體不夠,系統會自動調整(虛擬記憶體設定為系統管理)。

注意事項

允許設定的虛擬記憶體最小值為2MB,最大值不能超過當前硬碟的剩餘空間值,同時也不能超過32位作業系統記憶體定址範圍——4GB。

禁用頁面檔案

當擁有了1G以上的記憶體時,頁面檔案的作用將不再明顯,因此我們可以將其禁用。方法是:依次進入註冊表編輯器“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\MemoryManagement”下,在“DisablePagingExecutive”(禁用頁面檔案)選項中將其值設為“1”即可。
PS:此舉可能會造成系統不穩定.某些程式無法運行或當機。請根據自己實際情況更改。
在擁有4G以上的記憶體時,虛擬記憶體已經無足輕重了。在關閉後日常使用中沒有報錯、收到系統記憶體不足警告以及出現卡死等情況,那么可以高枕無憂了,不用擔心關閉虛擬記憶體帶來的負面影響。

清空頁面檔案

在同一位置上有一個“ClearPageFileAtShutdown(關機時清除頁面檔案)”,將該值設為“1”。這裡所說的“清除”頁面檔案並非是指從硬碟上完全刪除pagefile.sys檔案,而是對其進行“清洗”和整理,根據微軟的說法,這是一個安全選項,與性能無關。
高級話題:使用 SweepRAM 工具。適用於 Windows 2000/XP/2003。網上可以找到 SweepRAM 程式。該程式最大的作用是把所有進程的工作集清空。所謂工作集是指進程已映射的物理記憶體部分(即這些記憶體塊全在物理記憶體中,並且 CPU 可以直接訪問),還有一部分不在工作集中的虛擬記憶體則可能在轉換列表中(CPU 不能通過虛地址訪問,需要 Windows 映射之後才能訪問),還有一部分則在磁碟上的頁面檔案里。工作集在進程運行時會被 Windows 自動調整,頻繁訪問的頁面(4KB 的塊)會留在記憶體中,而不頻繁訪問的頁面在記憶體緊張時會被從工作集中移出,暫時保存在記憶體中的“轉換列表”中,或者進一步換出到頁面檔案中。當應用程式再次訪問某一頁面時,作業系統會將它重新加回工作集中。
SweepRAM 工具以一種適中的頻率(大約 40 分鐘一次)反覆運行,可以將各進程的工作集清空,而之後各進程的工作集會慢慢恢復。這樣可以保持更好的工作集平衡,從而提高系統性能。

關機自動清除

設定步驟如下:
  1. 運行:gpedit.msc進入組策略對象編輯器。
  2. 如圖依次打開如下內容:“計算機配置”---“Windows 設定”---“安全設定”---“本地策略”---“安全選項”---“關機:清除虛擬記憶體頁面”。
  3. 右擊“屬性”點擊“已啟用”。
  4. 確定,這樣設定就ok了。
對於沒有組策略的解決方案如下:
  1. 按系統快捷鍵win+r運行regedit打開註冊表編輯器。
  2. 查找到“HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Memory Management”,然後在右邊的列表中雙擊“ClearPageFileAtShutdown”。
  3. 在彈出的“編輯DWORD”值對話框中改為1。
  4. 重新啟動計算機,使修改生效。

使用技巧

對於虛擬記憶體如何設定的問題,微軟已經給我們提供了官方的解決辦法,對於一般情況下,我們推薦採用如下的設定方法:
  • 頁面檔案,檔案的大小由你對系統的設定決定。具體設定方法如下:打開"我的電腦"的"屬性"設定視窗,切換到"高級"選項卡,在"啟動和故障恢復"視窗的"寫入調試信息"欄,如果你採用的是試和錯誤報告了。所以折中的辦法是在系統盤設定較小的頁面檔案,只要夠用就行了。
  • 記憶體,其最小值設定為物理記憶體的1.5倍,最大值設定為物理記憶體的3倍,該分區專門用來存儲頁面檔案,不要再存放其它任何檔案。之所以單獨劃分一個分區用來設定虛擬記憶體,主要是基於兩點考慮:其一,由於該分區上沒有其它檔案,這樣分區不會產生磁碟碎片,這樣能保證頁面檔案的數據讀寫不受磁碟碎片的干擾;其二,按照Windows對記憶體的管理技術,Windows會優先使用不經常訪問的分區上的頁面檔案,這樣也減少了讀取系統盤里的頁面檔案的機會,減輕了系統盤的壓力。
  • 頁面檔案,則其它硬碟分區不設定任何頁面檔案。因為過多的分區設定頁面檔案,這樣會導致,硬碟磁頭反覆的在不同的分區來回讀取。這樣既耽誤了系統速率,也會減少硬碟的壽命。當然,如果你有多個硬碟,則可以為每個硬碟都創建一個頁面檔案。當信息分布在多個頁面檔案上時,硬碟控制器可以同時在多個硬碟上執行讀取和寫入操作。這樣系統性能將得到提高。
  • 需要注意!設定過大的虛擬記憶體將導致關機過慢甚至幾十分鐘,例如2G電腦設定16G虛擬記憶體雖然增加了電腦性能但是關機可能需要幾分鐘。

相關詞條

熱門詞條

聯絡我們