如果你平时工作使用Windows系统,对Windows的内存监控应该不陌生,在“任务管理器”中显示90%的内存占用,这些内存就全部由进程占用了,如果这时产生了新的进程,没有内存可用,内存管理器会将一部分内存数据交换到硬盘,出现这种情况,系统性能就会显著下降。
在Linux系统中常用“free”命令查看系统的内存使用情况,这篇文章就对“free”命令做介绍。“free”命令输出系统内存使用情况的快照,实际的信息保存在文件“/proc/meminfo”中。
“free”命令输出中,“used”列显示的内存占用由两大部分组成:进程占用、操作系统缓存(cache+buffer),操作系统缓存数据是可以直接丢弃的,不需要交换到硬盘中,所以在Linux系统中,实际可用的内存除了“free”列显示的内存还要加上buffer/cache占用的内存。
使用“free”命令,输出如下(操作系统是Debian 10):
![74ce6bfa4713ebe7c108d870e83dac8f.png](https://i-blog.csdnimg.cn/blog_migrate/edfc5929184e0fac7c2ad74141ca3aa8.jpeg)
新版本free命令的输出
忽略Swap部分,可以发现下面数量关系:
total=used+free+buff/cache
根据上面的描述,可用的内存为“free+buff/cache”即39178612,但实际有点不一样,因为一些cache内存被活动进程使用了,如果使用这部分内存,会影响系统的性能。“available”显示的值考虑到这个情况,这里显示的内存是可以直接由新进程使用的,而不影响系统性能的。
在较早的操作系统,比如RHEL 6,“free”命令的显示如下:
![0344eb28afe0e784dc3e931c3e795d67.png](https://i-blog.csdnimg.cn/blog_migrate/cd36ebe29153e5fe12862232ec2e99f9.jpeg)
较早版本free命令的输出
这种情况下,第二行显示的“used”和“free”内存没有包含buffers和cache,总内存的数值“total”等于第二行的“used”加上“free”的值,也等于第三行的“used”加上“free”的值。这里还有两个关键的等式,如下:
![a092a9bcb021ea819de334b73754c875.png](https://i-blog.csdnimg.cn/blog_migrate/9c2b3751b21a2d5dea3a0cd91767409b.jpeg)
used和free的计算方法
希望这篇文章能帮到你!