如何合理使用虛擬記憶體

2021-05-25 17:58:35 字數 1853 閱讀 9602

觀點一: 對於擁有大容量物理記憶體的使用者,可以完全禁用虛擬記憶體。要徹底了解這個問題,首先得明白什麼是虛擬記憶體,以及虛擬記憶體有什麼作用。在早期,因為記憶體**非常昂貴,因此一般電腦上都不會配置太多,那麼有時候如果作業系統和應用程式需要的記憶體數量超過了計算機中安裝的物理記憶體數量,作業系統就會暫時將不需要訪問的資料通過一種叫做「分頁」的操作寫入到硬碟上乙個特殊的檔案中,從而給需要立刻使用記憶體的程式和資料釋放記憶體。這個位於硬碟上的特殊檔案就是分頁檔案(也就是虛擬記憶體檔案或叫做交換檔案)。對於windows 2000/xp/2003作業系統,分頁檔名為pagefile.sys,預設情況下位於作業系統所在分割槽的根目錄下。

既然知道了虛擬記憶體的由來和作用,那麼持這種理論的人認為,硬碟和記憶體的速度具有天壤之別,如果禁用了虛擬記憶體,系統就不需要花時間將記憶體中的資料分頁到硬碟上,從而提高了系統的執行效率。然而根據傳統的設計,windows 的許多核心功能都需要使用分頁檔案,而如果你禁用了所有分頁檔案,有些第三方的應用軟體都可能會遇到記憶體不足的錯誤。其實在不需要的時候,windows並不會使用分頁檔案,因此這樣調整系統你並不能獲得任何效能上的提高。

觀點二: 對於虛擬記憶體,建議的設定是物理記憶體數量的1.5-2倍(分別為虛擬記憶體的最小值和最大值)。在討論這個問題之前首先看兩種情況:有兩台電腦,除了記憶體,其他所有配置都相同。電腦a擁有128mb記憶體,電腦b擁有1gb記憶體,這兩台電腦都執行windows xp作業系統。按照這個觀點的方法設定,電腦a的虛擬記憶體將會設定為192mb-256mb,而電腦b的虛擬記憶體將會設定為1.5gb-2gb。那麼實際使用中呢,電腦a很可能會在執行大型軟體或者遊戲的時候產生虛擬記憶體不足的問題,而電腦b則會因為設定了如此大的分頁檔案而導致硬碟空間的浪費。如何根據實際情況設定虛擬記憶體,這個我們會在下文中介紹。

觀點三: 我們可以使用記憶體釋放軟體將執行中的程式占用的記憶體釋放出來,提高系統執行效率。在否定這個觀點之前我們首先要明白一件事,任何程式,只要被執行,就會占用一定的記憶體空間(具體占用多少記憶體則取決於程式自己的體積以及載入的資料檔案的大小),那麼這種所謂的記憶體釋放軟體是如何生效的?軟體並沒有退出,從**釋放記憶體呢?原來這種「優化」軟體會把程式占用的記憶體全部分頁到虛擬記憶體中,從而造成了物理記憶體被釋放的「假象」。

安裝有這類軟體的朋友可以試試看,開啟windows任務管理器,開啟程序選項卡,接著在「檢視」選單下選擇「選擇列」命令,在隨後出現的選擇列對話方塊中選中「虛擬記憶體大小」這一選項。接著你的任務管理器將會變成類似圖一的樣子。

記住幾個占用記憶體比較多的程序各自使用的記憶體數和虛擬記憶體數,然後使用記憶體釋放軟體進行釋放。本文將會使用微軟發布的windows server 2003 resource kit工具empty.exe,該工具前段時間在網上非常風光,很多人都宣稱具有釋放空閒記憶體的作用(雖然還有其他釋放記憶體的工具,不過原理上都是一樣的)。執行「empty *.*」,可以看到,在短時間內,之前占用了大量物理記憶體的程序占用的物理記憶體數量都變得很少,而虛擬記憶體用量增加了(圖二),但是這種現象只持續了很短的時間。馬上,這些程序占用的物理記憶體數量又開始回公升了。

因此可以說,這類釋放記憶體的軟體根本沒有太大作用。相反,有些軟體可以在記憶體占用達到一定程式之後自動釋放記憶體,這可能會對本身就已經很繁忙的計算機雪上加霜。想象這種情況,當你記憶體數量不多,而又執行了比較大型的程式後,必然導致物理記憶體數急劇減少,而在這種情況下所謂的「優化軟體」開始自作聰明,把占用記憶體的資料往硬碟上進行分頁,而程式的執行需要這些資料,這可能導致了在同一時間內,「優化軟體」試圖將資料分頁到硬碟,而作業系統試圖將資料從硬碟讀取到記憶體,極大增加了硬碟的讀寫。

其實在早期,這類程式還是有一定作用的,那時候主流的windows 9x作業系統本身在記憶體管理上存在問題,而且有些設計不嚴謹的程式也可能存在記憶體洩露的bug,因此這類軟體應運而生。但是現在基於nt技術的windows作業系統在記憶體管理上得到了極大提高,同時大部分軟體的設計也越來越合理,因此我們完全可以和這類軟體說再見了。

虛擬記憶體使用

虛擬記憶體使用一 簡介windows 提供了3 中進行記憶體管理的方法,包括 虛擬記憶體 一般用來管理大型資料結構,受到硬碟調頁檔案的支援 記憶體對映檔案 常用來管理大型資料流和多程序共享。記憶體堆 最適合用來管理大量的小物件。二 虛擬記憶體的使用 1 我們可以在程序的位址空間中保留乙個區域 pvo...

redis虛擬記憶體的使用

redis的虛擬記憶體與作業系統的虛擬記憶體不是一回事,但是思路和目的都是相同的。就是暫時把不經常訪問的資料從記憶體交換到磁碟中,從而騰出寶貴的記憶體空間用於其他需要訪問的資料。尤其是對於redis這樣的記憶體資料庫,記憶體總是不夠用的。除了可以將資料分割王到多個redis server外。另外能夠...

虛擬記憶體應用

虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...