在Linux下,内存分为两个部分,分别是物理内存和虚拟内存。物理内存就是主机上插入的内存条;虚拟内存就是在硬盘上虚拟出来的一块逻辑内存空间,用于解决物理内存不足的情况。Linux下的虚拟内存被称为交换空间Swap Space,也就是系统中的swap分区。虽然现在的物理内存已经足够大了,但是还是建议保留一定的swap分区。
使用free命令可以查看当前内存的使用信息。命令语法如下:
free [选项]
常用选项:
- -h:以易于阅读的方式显示内存使用信息
free命令在CentOS 6.x和CentOS 7.x版本的系统下回显的内容并不相同,以下来详细分析下:
CentOS 6.x
[root@localhost ~]# free -h total used free shared buffers cached Mem: 7.7G 601M 7.1G 172K 151M 208M -/+ buffers/cache: 241M 7.5G Swap: 2.5G 0B 2.5G
列详解:
- total:总量
- used:正在使用
- free:空闲
- shared:共享内存
- buffers:存储块设备以及文件系统元数据(metadata)所占用的缓冲页
- cached:存储普通文件所占用的缓存页
行详解:
- Mem:物理内存
- -/+ buffers/cache:应用程序可以使用的内存
- Swap:交换分区
buffers/cached的存在是为了提高文件的读取性能而存在的,当应用程序需要内存时,buffers/cached占用的空间将很快被回收。所以,在系统看来,内存的free值=total-used,但对于应用程序来说,buffers/cached这一部分空间是可用的,所以free值=系统free值+buffers+cached。这也是为什么free命令的回显中会有两个free值的原因。
CentOS 7.x
[root@localhost ~]# free -h total used free shared buff/cache available Mem: 7.6G 192M 7.1G 8.8M 338M 7.2G Swap: 2.5G 0B 2.5G
这里与CentOS 6.x中的回显不同的是,分开的buffers/cached列合并为buff/cache列,并新增了available列,同时-/+ buffers/cached行也取消了,使得显示更加简洁。CentOS 7.x下已经把buffers/cached合并,因为两者本质相同。新增的available列显示的就是应用程序可用的空闲内存。