在linux中,mem是物理內存;當物理內存即將溢出時,會將內存中不常用的內存轉移到SWAP中,等到物理內存空余,并且SWAP的內存活躍后才轉移回來。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux中mem是什么
mem 是物理內存,當物理內存即將溢出時,會將內存中不常用的內存轉移到SWAP中 等到物理內存空余,并且swap的內存活躍后才轉移回來
Linux?mem/swap/buffers/cached區別
free命令相對于top,提供了更簡潔的查看系統內存使用情況:
#?free?-m
mem:表示物理內存統計
buff/cache:表示物理內存的緩存統計
swap:表示硬盤上交換分區的使用情況
系統當前真正可用的內存并不是第一行?free?標記的,他僅代表未被分配的內存
buff/cache列占用過高
buff/cache主要干啥來的?
Linux具有先進的緩存機制,會針對dentry(用于VFS-虛擬文件系統,加速文件路徑名到inode的轉換)、buffer?cache(針對磁盤塊的讀,寫)和?page?cache(針對文件?inode?的讀寫)進行緩存操作來提高讀寫效率。但是在進行了大量文件操作之后,緩存會把內存資源基本用完,雖然文件讀取效率提高了,但是物理內存會被逐漸吃完。
原來是因為系統進行了頻繁的文件讀寫操作,但是為什么操作系統不會主動回收呢,原來是因為drop_caches?的默認參數設置的就是不釋放。
drop_caches?的值可以是?0-3?之間的數字,代表不同的含義:
0:不釋放(系統默認值)
1:釋放頁緩存
2:釋放dentries和inode
3:釋放所有緩存
修改:
#?echo?1?>?/proc/sys/vm/drop_caches
小插曲
當Linux的物理內存快要被耗盡時,系統會把一些進程占用的內存轉移到?swap?區,當物理內存被釋放一部分時,swap?區的一些內存占用又慢慢回到?mem?區,但是?mem?區卻不再是之前的滿負荷狀態,而是有一部分?free?的內存!
【總結】
1)當物理內存快被耗盡時,系統并沒有崩潰,而是拿?swap?做臨時內存,當兩者都耗盡,系統?OutofMemory
2)物理內存達到峰值,系統中一些不常用的進程內存占用被提到?swap?區
3)當?Men?區的資源進行釋放時,被挪到?swap?的內存并不會全部回來,隨著系統或者程序的喚醒才會慢慢回到?men?區
4)swap?是內存不夠時,磁盤虛擬出來的內存,磁盤主要是?I/O?級別的操作,并不是系統內核級別的操作,處理速度跟?mem?區不是一個等級
相關推薦:《Linux視頻教程》