查看Linux服务器下的内存使用情况,可以使用命令free -m

 

[root@localhost ~]$ free       // 以KB为单位显示内存使用情况
[root@localhost ~]$ free -m    // 以MB为单位显示内存使用情况
[root@localhost ~]$ free -g    // 以GB为单位显示内存使用情况

 

 

free -m
             total       used       free     shared    buffers     cached
Mem:         48211      18670      29541          0        798      15510
-/+ buffers/cache:       2361      45850
Swap:         3999          0       3999

//Mem:物理内存使用情况

//swap:交换分区情况

//+buffers/cache:(可用)的内存数,即free+buffers+cached

//-buffers/cache:(已用)的内存数,即used-buffers-cached

//total:物理内存总大小 当前49GB

//used:已经使用的物理内存大小 当前19GB

//free:空闲的物理内存大小  当前46G

//shared:多个进程共享的物理内存大小

//buffers Buffer:缓存内存数 当前798MB

//cached Page:缓存内存数 当前16GB

 

可用内存的计算公式为:

可用内存=free+buffers+cached

即29541MB+798MB+15510MB=45849MB

其中,内存总数与已使用内存数和空闲内存数的关系是:

total(49GB)=used(19G)+free(30G)

 

在第二部分内容(-/+buffers/cache)中各参数如下所示。

(-buffers/cache):已用的used内存数,即2.361G(指的是第一部分Mem行中的used-buffers-cached)。 (18670-798-15510)

(+buffers/cache):可用的free内存数,即45850G(指的是第一部分Mem行中的free+buffers+cached)。

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

 

centos7 free -h命令

[root@localhost ~]$ free -h    // 自动转换单位显示内存使用情况(centos7才有)

输出结果:

[root@MongoDB ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           652M        169M        222M        5.6M        261M        350M
Swap:          4.0G          0B        4.0G


// Mem:物理内存的使用情况
// Swap:交换分区的使用情况

// total 总物理内存大小
// used 已经使用的物理内存大小
// free:空闲的物理内存大小

// shared:多个进程共享的物理内存大小
// buff/cache:用做缓冲/缓存的物理内存大小
// available:还可用的物理内存大小

// total 总内存 = used + free + buff/cache
// available 还能用的内存 = free + buff/cache
// 如果使用到交换分区,则表明物理内存不够或内存泄漏了

// 关于 buffer 和 cache:
// 我们的数据是存放在磁盘上的,数据是交给CPU进行处理的,但磁盘的运转速度很快,CPU的运转速度很慢,不可能直接把磁盘的数据直接丢给CPU进行处理,因此要经过
// 一个中间层,即内存,我们把这部分内存称为缓存(cache);相反地,CPU把数据处理完了,要存放到磁盘中,也要经过内存这个中间层,这部分内存则称为缓冲(buffer)
// 因此,数据的流向不一样,内存的角色也不一样。系统会优先预留一部分内存给 buff/cache 使用,剩下的内存再留给系统或程序使用