free命令是Linux使用者最常用的查看系统内存的命令,它可以显示当前系统已使用和空闲的内存情况,包括物理内存、交换内存和内核缓存区内存等信息。
free命令的选项也比较简单,常用的参数命令如下。
-b 以Byte为单位显示内存使用情况
-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-g 以GB为单位显示内存使用情况
-o 不显示缓冲区调节列
-s<间隔秒数> 持续观察内存使用情况
-t 显示内存总和列
-V 显示版本信息
下面是Linux机器中使用free -m命令看到的内存使用情况。
$free -m
total used free shared buff/cache available
Mem: 7763 5507 907 0 1348 1609
Swap: 16197 2940 13257
可以看到,这个机器上一共有7763MB物理内存。
- total:指系统中总共的内存。这里有两种内存,一个是“Mem”,指的是物理内存;另一个是“Swap”,指的是交换磁盘。
- used:指程序使用的内存。
- free:未被分配的物理内存大小。
- shared:共享内存大小,主要用于进程间通信
- buff/cache:buff指的是buffers,用来给块设备做缓存,而cache指的是page cache,用来给打开的文件做缓存,以提高访问文件的速度。
- available:这是free命令新加的一个选项。当内存短缺时,系统可用回收buffers和page cache。那么available = free + buffers + page cache对不对呢?其实在现在的Linux内核中,这个公式不完全正确,因为buffers和page cache里并不是所有的内存都可以回收,比如共享内存段、tmpfs和ramfs等都属于不可回收的。所以这个公式应该变成:available = free + buffers + page cache - 不可回收部分。
(以上内容,摘自《奔跑吧Linux内核 入门篇》)