linux free 命令 查看内存使用情况
查看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 使用,剩下的内存再留给系统或程序使用