有时我们需要准确地知道我们的Linux系统如何使用内存。本文将研究如何使用free
命令行程序查看Linux系统上的内存使用情况。我们将清楚地定义Linux系统上空闲Free内存和可用内存之间的区别。
了解可用内存与空闲内存
什么是空闲内存,它与可用内存有什么不同?
空闲内存是当前的内存量不用于任何东西。出于这个原因,尤其是在服务器上,我喜欢将空闲内存视为浪费的内存。一旦您的应用程序启动并经过了相当长的正常运行时间,这个数字几乎总是很小。
可用内存是可用于分配给新进程或现有进程的内存量。可用内存是不需要swap交换空间即可使用的内存量的估计。
Linux中空闲内存与可用内存之间的区别在于,空闲内存未在使用中,并且无所事事。虽然可用内存是使用过的内存,包括但不限于缓存和缓冲区,但可以在没有使用交换空间swap的性能损失的情况下释放它们。
比较空闲内存和可用内存。
考虑到这一点,让我们看看两台60GB内存的Linux服务器。服务器A和服务器B。我们将使用free
命令:
要查看 Linux 中的可用内存与空闲内存,请登录到您的服务器并输入以下命令:
free -h
结果应该类似于下面这两个屏幕截图。我还运行了uptime
命令以确认两个系统都已在线一段时间。

服务器 A:空闲内存少于 1%(浪费内存),13GB可用内存。

服务器 B:在 153 天的正常运行时间之后,仍然浪费了30GB的内存(free)。
以上是Linux中空闲内存与可用内存之间的区别。当您比较两个系统时,即使负载平均值相似(处理相同的工作负载),很明显一台服务器几乎使用了其内存的100%(服务器 A),而另一台服务器则浪费了50%以上的内存(服务器 B)。请注意,这两款服务器都有12个CPU核心,并且可以交换到RAID 10 NVMe存储。
请注意,即使有可用内存,Linux内核也会将最不常用的内存页移动到交换空间中。
结论
不要因为查看Linux系统上的“空闲”内存而匆忙下结论,因为您还应该考虑可用内存、缓冲区/缓存和其他概述的因素。