在物理內存充足的情況下,是否需要禁用虛擬內存?

12G內存。如果是,Win8下面如何操作?謝謝


謝邀。先糾正一個誤區,虛擬內存是不能禁用的。@夏昊Filmmaker君所說的「虛擬內存」,應該指的是頁面文件(paging file,pagefile.sys),是操作系統將部分虛擬內存頁面換到磁碟上存放的數據。文章較長,可以直接跳到最後一段看結論

我們先看看物理內存中有什麼數據吧,我也是12G內存,引用以前的一個回答,物理內存中不僅存放了各個進程的數據(Process Private部分),還有許多預讀進來的文件(Mapped Files),這些內容可以用微軟提供的工具RAMMap來查看。操作系統會猜測你的接下來要使用哪些文件,或者你運行的進程接下來很可能讀寫哪些文件,然後把這些文件預讀到內存中,到你真正需要的時候,打開這些文件就會非常快了。

認為頁面文件不好的一個觀點是,頁面文件中的數據需要從磁碟讀入,而磁碟的讀寫速度是遠遠低於內存的讀寫速度的,關閉頁面文件,強迫所有分頁留在內存裡面,可以提升性能。看起來似乎有道理,不過內存應該留給最需要的任務來使用,有過一個進程並不是特別活躍,那麼完全可以把他的分頁換到磁碟上,把內存騰出來留給更需要使用這塊內存的任務,或者映射更多的文件到內存中提高命中率。這一點在微軟的一名技術專家Mark Russinovich的一篇博文中提到過:

Some feel having no paging file results in better performance, but in general, having a paging file means Windows can write pages on the modified list (which represent pages that aren』t being accessed actively but have not been saved to disk) out to the paging file, thus making that memory available for more useful purposes (processes or file cache).

Technet - Pushing the Limits of Windows: Virtual Memory

另外一個認為頁面文件不好的觀點是,頁面文件的存在會頻繁的讀寫磁碟,會降低SSD這類特殊磁碟的使用壽命。微軟也在一篇關於Windows 7優化的文章(Support and QA for Solid-State Drives)中指出,Windows 7是為SSD優化過的,對於頁面文件的讀寫操作的比例大約是40:1,絕大部分是讀操作。讀操作讀取的數據一般都比較小,而寫操作寫入的數據相對都比較大,這些設計是有考慮過SSD壽命的問題的。

另外,在系統崩潰的時候生成錯誤報告也是需要依賴頁面文件的,禁用頁面文件會使得這個功能受到影響。不過除了開發者,可能很少人會知道錯誤報告和dump怎麼使用,這一點就忽略吧。

綜上所述,至少在Windows 7或更新版本的系統中,無論物理內存有多大,頁面文件的存在都是積極而且有益的。如何更好地調度和管理內存,這個工作就交給Windows自己去做吧,微軟的工程師都幫我們做好了,至少不會比我們自己管理要差。至於禁用頁面文件,是可以的,當且僅當磁碟空間不足的時候。

其他相關文章:

64 bit - Can Windows 7 pagefile be turned off if 4GB of hi-speed RAM present?


眾說紛紜,我16G內存,我選擇最小值:800MB,因為小於此值win10會警告.


在win7下禁用的話會導致windows Xp mode 打不開


使用pagefile/swapfile並不意味著你有了無限的內存可分配,只不過把你的可用內存上限提高了一下而已,而且其中的磁碟部分的「內存」使用起來是極慢的

內存非常充足(約2倍於你平時能用到的最大內存數)的話就不需要swapfile。我自從2007年到現在一直在Windows/OSX/Linux下把swapfile禁掉,沒有出過任何問題

我以前管理過一台配置過swap partition的Linux web server,當訪問突然增加時,由於apache大量fork進程,導致機器瘋狂地swap內存,機器卡到幾乎完全無響應,想從遠端ssh進去管理都要等5分鐘。從那以後我就對swapfile敬而遠之


關閉頁面文件情況下,我覺得系統速度有提升。由於長期打開很多軟體不關,一些idle的軟體在啟用了頁面文件的情況下,這些文件應該會被寫入磁碟為內存提供空閑資源吧?這樣重新切換到該idle的軟體時要重新讀入內存就會有卡頓的感覺。Chrome裡面開了太多的標籤頁的時候也有這樣的感覺,切換到長時間沒有訪問的標籤的時候,頁面就會空白,要緩上一整子才顯示頁面內容。我覺得在內存夠用的情況下盡量關閉頁面文件應該還是對速度提升有幫助的。和使用RAMDISK一樣的道理,為了速度盡量和硬碟少交互。


樓主所講的「虛擬內存」,如果指的是「分頁文件」,那我的觀點是不能禁用,因為這能讓系統效率提高。

理由,要先從WINDOWS的內存機制說起。

WINDOWS把內存使用抽象為了邏輯內存,所有程序,使用的都是邏輯內存,每個進程的邏輯內存相互獨立,可以看作擁有與別的進程不相關的「4G內存」(64位為2T,以下默認以32位系統為例)。

這樣的話,同時運行了10個進程,總的邏輯內存總數就是40G了。你應該沒有這麼大物理內存吧?也應該不會只有10個進程吧?系統自己的進程都不止10個了。。。

那如果只有12G甚至只有2G物理內存,應該怎麼活?

這時候分頁文件該出場了。不過還要先講一下邏輯內存的組成。

邏輯內存,顧名思義就是「邏輯上」的內存,它在WINDOWS的抽象模型中是由物理內存與頁面交換文件(pagefile.sys)組成。

而位於邏輯內存中的數據,又分為常用數據與非常用數據。

比如你把某個程序最小化了,那它當前的UI數據就暫時用不著了,因為已經看不見了。但這些數據仍然在邏輯內存中,總不可能直接釋放了吧?但是物理內存又有限啊,怎麼辦?

好吧,這時分頁文件才真的出場了------非常用數據,丟分頁文件里吧。

這樣的話,從邏輯內存的角度來講,這些非常用數據「仍然在邏輯內存中」,但物理上它們又到了pagefile.sys中,把物理內存空出來了,可以給別的需要物理內存的進程使用了。

然後當你把這個最小化的程序重新激活的時候,又要用到UI數據了,這時WINDOWS檢測到這些UI數據在邏輯內存中是位於分頁文件中的,那麼就讀pagefile.sys把它們又載入到物理內存里去吧。這個載入的時間,就是要等待的時間(這下明白為什麼一個很久不用的程序激活為焦點程序時會卡一會兒了吧?)。強行禁用分頁文件,提升的就是這個過程中的等待時間。

這個過程,稱為交換過程,所以pagefile.sys又稱為交換文件。它的功能,就是把暫時用不到但又需要隨時候命的數據放進這裡。什麼?為什麼不直接釋放,下次用到時再載入?首先,重新載入又多了一些IO操作,性能上更低;其次,大部分內存中的數據都是進程運行時的中間結果,你上哪載入去?

因此,除非你有128G物理內存,或者根本不使用需要大量物理內存的程序,否則分頁文件是一定需要的,因為任何進程一定是有非常用數據的。

至於禁用分頁文件,確實能讓系統強行把所有數據都映射到物理內存中,也確實能讓使用內存數量不多的進程得到一定的性能提升------但是這些禁用的同學,大概沒運行過真正吃內存的進程吧?例如用PS打開一個一兩G的PSD文件。否則肯定會收到「內存不足」的提示。

那麼到底要怎樣才能提高性能,又不至於內存不足呢?

好辦!

下載任何一個RAMDisk類軟體,例如Primo Ramdisk Ultimate Edition(最好是帶未檢測內存識別功能的,對於32位系統來說只能識別4G以內。更多的內存系統也無法直接使用)。把一定量的物理內存分配為一個內存檔R。然後再把所有物理磁碟上的分頁文件禁用,只設置分頁文件到這個R盤中去。

這樣的話,邏輯內存也夠用了,物理內存也充分使用了!

至於64位系統,每個64位進程的邏輯內存空間是2T,只要不運行太吃內存的程序,並且物理內存足夠大,那還是可以考慮禁用分頁文件的。


可以禁用虛擬內存.

目前很多無盤的操作系統.所有內容都儲存在內存里.

電腦選擇屬性-〉高級-〉性能下面的設置-〉高級-〉更改把每個磁碟分區上的虛擬內存都設置成無分頁文件然後點設置 確定 然後重新啟動計算機.


win10,i5,ssd,之前4g的內存,用ai和ps巨卡,開圖存圖都很卡。換了16g內存之後秒奔,但是有天蛋疼取消了分頁文件直接卡成狗。重新選擇系統自動分配,速度立刻回來。

沒有什麼特別專業的理論論證,實踐出真知。建議不要關閉分頁文件。

補充一下,通過對系統檢測,關閉分頁文件的時候C盤基本很少讀取,開啟分頁文件之後存圖開圖基本都在讀取C盤。

感覺就是硬碟壽命和速度上做個選擇。但是對於硬碟壽命,我覺得東西不就是買來用的么。


建議不要禁用,理由有二:

  1. 不會有性能的提升,沒必要

Here』s Why Disabling the Windows Pagefile is Pointless

For years, Windows tweaking people have tried to convince everybody
that if you disable the pagefile, you』ll get a big performance boost.
One of our readers did a ton of testing to prove that this is not true.

Reader Eric did comprehensive testing using various test suites, boot
and shutdown, and other testing to see whether disabling the page file
break your system or give a performance boost.


Conclusions:

  • You can run Windows without a pagefile if you have enough RAM.
  • There』s pretty much zero benefit to disabling the pagefile.

You should definitely check out the full (very long) article for all the details.

2.當內存佔用太大時,比如運行個虛擬機什麼的,因為沒有足夠不能將內存移至頁面文件,而引發程序程序奔潰

If programs start to use up all your available memory, they』ll start
crashing instead of being swapped out of the RAM into your page file.
This can also cause problems when running software that requires a large
amount of memory, such as virtual machines. Some programs may even
refuse to run.


我是贊成大內存,沒有必要打開虛擬內存。實際上並不能太過神化操作系統內存交換演算法。內存頁發生交換,並不是想像中「不夠用」的時候發生的,也就是說,就算你有100G的內存,這樣的交換還是每時每刻會發生的,因為系統運行的過程中,總會存在不活躍的進程,經過一系列的系統調度演算法過後,即使系統可用內存量富餘,還是會被交換到硬碟中。有人說「有些軟體」沒有虛擬內存會出錯,會無法運行,這個絕對是一個誤解。現代操作系統的存在很大一個作用是分配、管理和保護資源,沒有任何一條操作系統相關的函數是能夠「顯式」地把內存分配到「虛擬」內存裡面,軟體本身也沒有許可權直接指示操作系統什麼時候進行內存頁交換。普通軟體能做的,只是能夠告訴操作系統「我現在需要xx大小內存」,和「這部分內存我不需要了,你隨意處理」。另外請思考一個問題,原本2G內存,虛擬內存3G的情況下,系統能正常運行,為什麼物理內存8G,虛擬內存0G就不能正常運行呢?很多人說是因為負荷小,才沒出問題,但是需要注意的是,負荷足夠大的情況下,2G內存+3G虛擬內存,一樣會發生不穩定和造成系統崩潰的情況,因為即使交由託管虛擬內存大小,系統也不可能無限制地去把硬碟空間分配為虛擬內存,所以因為內存佔用問題而造成的系統穩定性降低,最根本的原因是物理內存size的問題,而不是因為沒有打開虛擬內存。最後再強調一個,windows內核中關於內存的管理策略,是針對大多數情況下做出的策略平衡,並不會過於傾斜向特別小的內存或者特別大的內存的情況。如果有超過8G,或者16G甚至更大的內存的情況下,而本身的用戶程序並不是太過佔用內存,再發生內存頁交換,是毫無意義的,反而讓本來的空閑內存得不到充分利用。


16G ddr3,Fluent,因為計算設置失誤,黑屏卡了30多分鐘才一頓頓的進入task關掉進程。一查記錄,程序佔用內存一路飆到了46G,也就是說30G的硬碟空間用來交換內存。

所以我覺得還是有必要自定義頁面文件大小的,不然不限制的託管真的夠坑

20170225補:然後畫pathlines時用完了劃分的分頁文件大小直接報內存不足自動關閉程序~


禁用了會更好一點。

我的物理內存16G。

如果我不禁用虛擬內存,那麼系統會自動給分配大概是物理內存大小的虛擬內存,也就是佔用16G硬碟空間。

所以我禁用了。

經過一段時間的日常使用,沒感覺到有任何問題。

也遇到過一次 「內存不足」 的提示,結果發現是explorer在搜索文件的時候佔用過多內存,大概有12G,而且還在不斷增長,恐怖吧?

停止了這次搜索,內存就降下來了。

如果不是這次的內存提示問題,我大概會一直搜索下去,也許虛擬內存會全部用上也不夠?

綜上所述,我認為禁用了更好。內存不足的問題不可怕,更可怕的是內存無限。大不了,你需要時候再打開。


個人經驗:本人用了兩年的Win 7 RAMOS,均已關閉虛擬內存(頁面文件),一直正常使用,未發覺異常和兼容性問題。沒有內存使用率高就運行異常的情況。

但是據網上消息:根據傳統的設計,Windows 的許多核心功能以及某些第三方軟體都需要使用分頁文件,如果我們禁用了所有分頁文件,那麼有些第三方的軟體就可能會遇到虛擬內存不足的錯誤。其實在不需要使用虛擬內存的時候,Windows並不會使用分頁文件,因此即使關閉了虛擬內存,也不會獲得任何性能上的提高。

所以我個人建議,如果你的電腦會進行比較重要的任務,對於穩定性要求較高,還是不要關閉好了


不知道為什麼,使用過mongodb後,分明物理內存還有2GB左右,但是打開什麼程序都報頁面文件不足,就連繫統的命令提示符都打不開


肯定要禁用啦


個人認為虛擬內存和英偉達的SM技術一樣,是有點雞肋的。如果內存足夠,對於性能提升很有限。具體要不要留還是看需求。我電腦32G內存,固態盤卻只有128G,原來虛擬內存開的情況下休眠和虛擬內存兩個sys就佔據了一半的磁碟空間(windows安排的虛擬內存通常和內存是一樣大的)。這種情況下停用虛擬內存倒是有效提升了我電腦的整體實用性。而如果內存8個G以下,硬碟空間又很大,那根本沒有去禁用的必要


好象禁用後速度確實提高!


禁用pagefiles會導致一些兼容性問題:
有些程序和遊戲在禁用虛擬內存的情況下會提示內存不足,導致不能正常工作,無論你物理內存有多大。
那些動不動提議說可以禁用虛擬內存的,你們有長期穩定的用過么?
另:我自己的筆記本,8g內存,頁面文件512-8192,win7會自動調整,512不夠的時候pagefiles會自動變大,這樣絕大部分情況pagefiles只佔512的磁碟空間,並且不影響使用。這應該算是虛擬內存跟磁碟空間比較合適的妥協方案。


呃。。。

實名反對排名第一的答案。。。

知乎上圖不方便。。。

PC屬性的性能選項中,請仔細睜大眼睛閱讀以下關於虛擬內存那一項的說明。

分頁文件時硬碟上的一塊區域,Windows把它當作RAM使用。

以前叫虛擬內存,現在叫分頁文件。原因是分頁文件描述了虛擬內存在硬碟上的文件格式。

Windows推薦的大小是物理內存的2倍。

一般情況下,超過16GB內存完全沒必要。

光創建分頁文件的IO就夠你喝一壺。


有爭論 但是因為之前有軟體兼容性問題的陰影 所以現在還保留1G

原先有微軟價值專家啥的建議保留 於是我就習慣成自然的多少給留上1/2G

如果有更權威的答案更好 畢竟現在技術進步了


推薦閱讀:

Windows 為什麼不開源?
Windows下用過之後就離不開的冷門軟體?
Windows:當我選擇『兼容性模式』的時候,究竟發生了什麼?
win8.1如果不分區,應該注意什麼?
ssd+hdd混合硬碟,裝win7還是win8.1?

TAG:MicrosoftWindows | 操作系統 | 信息技術IT | 內存RAM | 虛擬內存 |