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

amo*_*ooc 60 command-line memory-usage ram

的输出free -m是:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0
Run Code Online (Sandbox Code Playgroud)

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

Nan*_*nne 45

您有 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


saj*_*i89 28

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

  • total 您的总物理(假设没有虚拟化)内存
  • used 目前使用了多少(任何东西)
  • free 其中有多少是完全免费的(根本没有使用)
  • shared (从来没有任何东西,忽略该列)
  • buffers 内核缓冲区使用的内存
  • cached 用于缓存的内存

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

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

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

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

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

因此,在您的情况下,112MB是完全可用的内存,如果您考虑用于缓存的内存,可以在需要时分配给用户应用程序;那么501 MB是实际可用的最大内存。


Pau*_*rth 13

@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
Run Code Online (Sandbox Code Playgroud)

您可以阅读在其 repo中删除该行的 free(1) 提交。还提交添加新available