使用cat /proc/meminfo查看结果如下
# cat /proc/meminfo
MemTotal: 102724 kB
MemFree: 8404 kB
MemAvailable: 34336 kB
Buffers: 4588 kB
Cached: 22740 kB
SwapCached: 0 kB
Active: 17916 kB
Inactive: 12756 kB
Active(anon): 3352 kB
Inactive(anon): 0 kB
Active(file): 14564 kB
Inactive(file): 12756 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 3320 kB
Mapped: 9864 kB
Shmem: 4 kB
Slab: 57872 kB
SReclaimable: 3732 kB
SUnreclaim: 54140 kB
KernelStack: 992 kB
PageTables: 276 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 51360 kB
Committed_AS: 26468 kB
VmallocTotal: 1048372 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
参数说明
MemTotal
内存总数,系统从上电开始到引导完成,除去boot、内核要保留的一些内存,最后剩余可供系统使用的内存就是MemTotal,这个值在系统运行期间一般是固定不变的
MemFree
空闲内存,表示系统尚未使用的内存。
MemAvailable
应用程序可用内存数。系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以MemFree不能代表全部可用的内存,这部分可回收的内存加上MemFree才是系统可用的内存,即:MemAvailable≈MemFree+Buffers+Cached,它是内核使用特定的算法计算出来的,是一个估计值。它与MemFree的关键区别点在于,MemFree是说的系统层面,MemAvailable是说的应用程序层面
Buffer
缓冲器内存
Cache
缓存区内存
Shared
多进程共享的内存空间
Buffer与Cache的区别
常见的说法叫write-buffer和read-cache,buffer一般用作写操作上,cache一般用在读操作上,不过也不是一成不变的。
free指令
# free
total used free shared buffers
Mem: 102724 95196 7528 4 4588
-/+ buffers: 90608 12116
Swap: 0 0 0
计算公式:
参照free的输出结果,这里有几个计算公式:
为了直观说明,把第2行,Mem的行我这里称作OS Mem,第三行 buffers/cache行,称作APP buffer/cache:
OS Mem total = OS Mem used + OS Mem free
APP buffers/cache used = OS Mem used - OS Mem buffers - OS Mem cached
APP buffers/cache free = OS Mem free + OS Mem buffers + OS Mem cached
APP buffers/cache total = APP buffers/cache used + APP buffers/cache free = OS Mem total
参考链接: