Linux上free命令的输出

本文解析了Linux下free命令的输出结果,详细解释了各列含义,如物理内存、缓存和交换区等,并阐述了buffer与cache的区别及其对内存占用的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面是free的运行结果,一共有4行。为了方便说明,我们加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:

  • FO[2][1] = 999212
  • FO[3][2] = 305404  

                        1     2      3     4       5      6
1
                     total  used   free  shared buffers cached
2 Mem:                999212 967476 31736   0    50668   223000
3  -/+ buffers/cache: 693808 305404
4 Swap:              2048276 154524 1893752 

第四行为交换区的信息,分别是交换的总量(total),使用量(used)和有多少空闲的交换区(free)

第二行:total 内存总数: 999212  used 已经使用的内存数: 967476  free 空闲的内存数: 31736   
        shared 当前已经废弃不用,总是0   buffers Buffer Cache内存数: 
50668   
        cached Page Cache内存数: 223000   
  • 999212KB(缺省时free的单位为KB)物理内存,即FO[2][1];
  • 在这些物理内存中有967476KB(即FO[2][2])被使用了;
  • 还用31736KB(即FO[2][3])是可用的; 
  • A buffer is something that has yet to be "written" to disk. 
  • A cache is something that has been "read" from the disk and stored for later use.

也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。Linux和其他成熟的操作系统(例如windows),为了提高IO read的性能,总是要多cache一些数据,这也就是为什么FO[2][6](cached memory)比较大,而FO[2][3]比较小的原因。

第三行:

-/+ buffers/cache的意思相当于:
-buffers/cache 的内存数:693808 (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 
305404 (等于第1行的 free + buffers + cached)

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值