- 概述
free 命令是一个显示系统中空闲和已用内存大小的工具。free 命令的输出和 top 命令相似。大多数Linux发行版已经含有 free 命令。
- 命令查看方式
1.查询命令:只需在控制台输入free 即可,不带选项运行会显示一个以KB为单位的默认输出。
2.以兆为单位查询
$ free -m
free 同样提供给我们 b (B), -k (KB), -m (MB), -g (GB) and –tera (TB)这些单位给予显示。
3.以适合人类可读方式显示内存信息
Free -h
4.查询例子
1.第一行Mem:物理内存
Total:总量
Used:已使用的内存
Free:空闲可使用的内存
Shared:共享的,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存一份
Buffers: 缓存,可回收
Cached: 缓存,可回收
total = used + free
本例中:total(8009552)=used(7790784)+free(218768)
Buffers&cached的区别:
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.
cached是用来给文件做缓冲。
那就是说:buffers是用来存储,目录里面有什么内容,权限等等。而cached直接用来记忆我们打开的文件
2.第二行 buffer和cached
(-buffers/cache) used内存数:第一部分Mem行中的 used – buffers – cached
已用内存=used(7790784)-buffers(472)-cached(631444)=7158868;
可见-buffers/cache反映的是被程序实实在在吃掉的内存,已经使用掉的内存
(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached
可用内存=Free(218768)+buffers(472)+cached(631444)=850684()
+buffers/cache反映的是可以挪用的内存总数,还可以使用内存数
第一行和第二行的区别是:
第一行是从os的角度来分析,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是218768KB,已用内存是7790784KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第二行是:是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。可用内存=系统free memory+buffers+cached。
如果是应用服务器的话,一般只看第二行,+buffers/cache,即对应用程序来说free的内存太少了,也是该考虑优化程序或加内存了。
3.第三行 swap 虚拟内存
Total
Used
Free
当你看见 buffer/cache 的空闲空间低或者 swap 的空闲空间低,说明内存需要升级了。这意味这内存利用率很高。请注意 shared(共享)内存列应该被忽略 ,因为它已经被废弃了。
何时使用swap:
当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中获取这些空间。总之:系统总是在物理内存不够时,才进行Swap交换。
命令行下执行swapoff -a,关闭swap
命令行下执行swapon -a,开启 swap
4.centos7的free界面
free -h
第一行:
total:内存总大小。
used:使用了多少内存。
free:除了buff/cache剩余了多少内存。
shared:共享内存。
buff/cache:缓冲、缓存区内存数。
available:真实剩余的可用内存数。
关系:total = used + free + buff/cache
关系:available 包含 free 和 buff/cache 剩余部分,则是真实剩余内存。