在linux系統中,啓動一個程序,它佔用的內存假設是1G,可是運行一段時間後,使用top查看進行信息,你會發現它的內存只剩幾十M了,這是由於內存不足,它的內存被swap走了。
若開啓了swap,則系統會有一個交換空間在硬盤裏,你的內存數據正是被交換到硬盤裏,所以程序會運行的比較慢。
你能夠用free -m命令查看交換空間使用了多少了。
Linux的產生和發展,更多的應用和服務器,那麼對於Linux的各個管理機制要很是清晰,一個完整的Linux系統主要有存儲管理,內存管理,文件系統和進程管理等幾方面組成,貼出一些之前學習過的一個很是好的文章。和你們共享!如下主要說明Swap機制:
Linux支持虛擬內存(virtual memory),虛擬內存是指使用磁盤看成RAM的擴展,這樣可用的內存的大小就相應地增大了。內核會將暫時不用的內存塊的內容寫到硬盤上,這樣一來,這 塊內存就可用於其餘目的。當須要用到原始的內容時,他們被從新讀入內存。這些操做對用戶來講是徹底透明的;Linux下運行的程式只是看到有大量的內存可 供使用而並無注意到時不時他們的一部分是駐留在硬盤上的。固然,讀寫硬盤要比直接使用真實內存慢得多(要慢數千倍),因此程式就不會象一直在內存中運行 的那樣快。用做虛擬內存的硬盤部分被稱爲交換空間(Swap Space)。linux
通常,在交換空間中的頁面首先被換入內存;若是此時沒有足夠的物理內存來容納他們又將被交換出來(到其餘的交換空間中)。若是沒有足夠的虛擬內存來容納全部這些頁面,Linux就會波動而不正常;但通過一段較長的時間Linux會恢復,但此時系統已不可用了。web
有時,儘管有許多的空閒內存,仍然會有許多的交換空間正被使用。這種狀況是有可能發生的,例如若是在某一時刻有進行交換的必要,但後來一個佔用 很是多物理內存的大進程結束並釋放內存時。被交換出的數據並不會自動地交換進內存,除非有這個須要時。此時物理內存會在一段時間內保持空閒狀態。對此並沒 有什麼可擔憂的,不過知道了是怎麼一回事,也就無所謂了。服務器
許多操做系統使用了虛擬內存的方法。由於他們僅在運行時才須要交換空間,以解決不會在同一時間使用交換空間,所以,除了當前正在運行的操做系統的交換空間,其餘的就是一種浪費。因此讓他們共享一個交換空間將會更有效率。學習
注意,若是會有幾我的同時使用這個系統,他們都將消耗內存。然而,若是兩我的同時運行一個程式,內存消耗的總量並非翻倍,由於代碼頁及共享的庫只存在一份。spa
Linux系統經常動不動就使用交換空間,以保持儘量多的空閒物理內存。即便並無什麼事情須要內存,Linux也會交換出暫時不用的內存頁面。這能避免等待交換所需的時間:當磁盤閒着,就能提早作好交換操作系統