linux中查看当前内存使用情况的一个很好用的方法就是使用free命令。
free打印结果
[root@localhost ~]# free
total used free shared buffers cached
Mem: 7974736 7837212 137524 15776 708 7503360
-/+ buffers/cache: 333144 7641592
Swap: 4030460 0 4030460
Mem:表示物理内存统计
total:表示物理内存总量(total = used + free)
used:表示总计分配出去的内存(包含buffers 与cached )使用的数量,但其中部分缓存实际可能并未使用
free:未被分配的内存
shared:共享内存,一般系统不会用到,这里也不讨论
buffers:系统分配但未被使用的buffers 数量
cached:系统分配但未被使用的cache 数量
备注:对系统来讲,buffers和cached都属于被分配出去的内存;对程序来讲,buffers和cached中大部分内存在需要时可快速回收在分配
-/+ buffers/cache: 表示物理内存的缓存统计
- buffers/cache即used-buffers-cached,反应的是被程序真是吃掉的内存
+ buffers/cache即free+buffers+cached,反应的是系统可在分配的内存
备注:+ buffers/cache的结果并不严谨,因为buffers中的部分内存并不能被快速回收,新的procps工具包里使用free可以直接查看available的内存
Swap:表示硬盘上交换分区的使用情况
当swap大量被使用的时候,说明是时候增加内存了
buffers与cached的区别
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
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages;cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等;而cached直接用来记忆我们打开的文件。
free命令的使用和参数
-b 以Byte为单位显示内存使用情况-k 以KB为单位显示内存使用情况
-m 以MB为单位显示内存使用情况
-o 不显示缓冲区调节列
-s<间隔秒数> 持续观察内存使用状况
-t 显示内存总和列
-V 显示procps版本信息。(注意大写)