如何解释“free -m”命令的输出?

如何解释“free -m”命令的输出?

的输出free -m为:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

哪个已用内存值是正确的,482 还是 93?

答案1

您有 112 MB 的完全可用内存,但您看到的 501 MB 不含“缓存”内存。这意味着操作系统已将某些内容放入您的内存中以提高速度。它称其为“已使用”(因此您的“可用”数字只有 112),但如果您需要,它实际上是可用的。

这是件好事,因为未使用的内存是无用的内存。如果需要,可以清除缓存的内存。人们过去在 Windows 95 上做的“我需要清理内存”这种老套的事情在这里不再需要:一切都很好,很开心 :)

您要找的号码是501免费(因为以兆字节为单位-m)。

请参阅以下页面以供参考:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

答案2

解释输出free:输出的
第一行free列出:

  • total您的总物理(假设没有虚拟化)内存
  • used目前使用量有多少(用于什么)
  • free其中有多少是完全免费的(根本没有使用)
  • shared(那里什么都没有,忽略该列)
  • buffers内核缓冲区使用的内存
  • cached用于缓存的内存

最后两项,缓存和缓冲区,是未分配给特定用户进程的内存。它是内核为提高整体性能而保留的内存,但不是“应用程序”内存。这些区域将根据内核关于缓存、内存压力、应用程序 I/O 模式等的策略而增大或缩小。

由于这两列不是用户分配的内存,并且如果用户分配需要,区域可以缩小(实际上缩小到零),因此它们在某种意义上是“空闲的” - 如果您的应用程序主动需要,内核可以释放那里的 RAM。

这就是第二行告诉您的内容。它从列中删除缓冲区和缓存内存used(这就是 的意思-),并将+它们添加到free列中。(将发生舍入问题。)

(最后一行显示交换空间的状态。)

礼貌: https://unix.stackexchange.com/a/33549/14497

所以,就你的情况来说112MB是完全可用的内存,如果考虑到用于缓存的内存,如果需要,可以分配给用户应用程序;那么501 兆是实际可供使用的最大内存。

答案3

@saji89 的回答非常好,但是现在free -m不再打印该-/+ buffers/cache行,而是将可用 RAM 的数量放在available第一行的新列中,例如:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

您可以阅读对 free(1) 的提交,删除了以下行在他们的仓库中。 还available添加新列的提交

答案4

free命令显示有关未使用和已使用的内存和交换空间的信息。

以下是http://www.linfo.org/free.html

第一行,标记为内存显示物理内存利用率,包括分配给缓冲区和缓存的内存量。缓冲区,也称为缓冲内存,通常定义为内存的一部分,用于临时保存发送到外部设备或从外部设备(例如硬盘、键盘、打印机或网络)接收的数据。

第二行数据以-/+ 缓冲区/缓存显示当前用于系统缓冲区缓存的物理内存量。这对于应用程序来说尤其有意义,因为通过使用 read() 和 write() 系统调用1 访问系统文件的所有数据都会经过此缓存。此缓存可以减少或消除从 HDD 或其他磁盘读取或写入的需要,从而大大加快数据访问速度。

第三行开始于交换,显示总交换空间以及当前已使用的交换空间量和剩余可用交换空间量。

让我们分析一下系统的内存使用情况

您使用了free带有“-m”选项的命令,该命令用于以兆字节为单位显示结果

-m, --mega
              Display the amount of memory in megabytes.

总内存为 595(已使用+可用)

已使用:482 免费:112

595MB 中的 482MB 由系统使用,其中只有 93MB 由活动程序使用,其余 324MB 在缓存中

因此,当您将来运行任何程序时,假设哪个程序需要超过 120MB。将提供所有 112MB(当前可用),其余 8MB 将从非活动程序缓冲区/缓存中获取。

编辑:找到了这个关联,这提供了很好的解释。

相关内容