首先要知道直接從物理內存讀寫數據比硬盤讀寫數據要快的多,但是內存是有限的,所以就引出了物理內存和虛擬內存,物理內存是系統硬件提供的內存,是真正的內存,虛擬內存是為了滿足物理內存不足時而提出的策略,他是利用磁盤空間虛擬出的邏輯內存,用作虛擬內存的磁盤空間被稱為交換空間(swap space)
作為物理內存的擴展,linux會在物理內存不足時使用交換空間,內核會將暫時不用的內存快信息寫到交換空間,這樣物理內存就得到了釋放,當需要 用到原始內容時重新從交換空間讀入物理內存
linux操作系統中當應用程序需要讀取文件中的數據時,操作系統會先分配一些內存將數據從磁盤讀入到內存中,然后再將數據分發給應用程序;當需要往文件中寫入數據時操作系統會分配內存接收用戶數據,然后再將數據寫入到磁盤中; 如果有大量數據需要讀寫 到磁盤時,系統的讀寫性能就會降低非常耗時間和資源,這種情況下就引入了buffers和cached機制
buffer和cached都是內存操作,用來保存內存曾經打開的文件和文件屬性信息,所以當系統需要讀取文件時會先從buffer和cache內存區查找,如果找到直接讀取發給應用程序,如果沒有找到才從磁盤中找,通過緩存大大提高了操作系統的性能,但是buffer和cache緩存的內容是不同的,buffer用來緩存塊設備的只記錄了文件系統的元數據以及pages,而cached用來給文件做緩沖;通俗說buffer存得是文件內容、屬性和權限,cached直接用來記憶我們打開過的文件和程序
釋放虛擬內存命令:
一般系統不會自動釋放內存
/proc/sys/vm/drop_caches 默認是0 表示不釋放緩存 3 代表釋放所有緩存
釋放swap前提保證內存剩余大於swap使用量,否則會宕機
查看當前swap分區掛載 swapop -s /dev/sda1
關停分區 swapoff /dev/sda1
查看狀態 swapon -a
如果想掛到其他分區下面 可以 swapon /dev/sda5
cat /proc/sys/vm/swappiness 60 表示物理內存用到60%時才會使用swap
swapiness=0 表示物理內存用完才會使用swap
swapiness=100 表示積極的使用swap分區,並且把內存上的數據及時搬運到swap空間
臨時修改swappiness參數
sysctl vm.swappiness=10
永久修改
vim /etc/sysctl.conf
sysctl -p