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


48

输出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?

Answers:


41

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


基本上:“只看第二行,即带有缓冲区/高速缓存的那一行”。
Nanne 2012年

25

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

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

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

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

那就是第二行告诉你的。它从used列中删除缓冲区和高速缓存存储器(这就是-方法),并将+它们添加()到free列中。(可能会发生一些大问题。)

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

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

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


寻找内存读数的人永远不会(或者几乎永远不会)对有多少内存是完全免费的,但是有多少内存是免费的。缓存的内存处于“使用中”状态,但也可以自由使用,因此您应该注意一下。
Nanne 2012年

我不太确定你为什么这么说?似乎暗示有人会故意删除缓存(这确实是一件坏事)?关键是,将棘手的内容(例如要使用的程序)加载到该内存中实际上是一种选择。您希望该112数尽可能小,但这在您的理论中意味着您无法打开任何程序。不是我要说的目标。另外:该缓存不仅是磁盘缓存,还包括系统缓存等
Nanne 2012年

@Nanne,好的。我同意男人。感谢您的更正。我已经更新了我的答案以反映出同样的意思。
saji89 '11

#####谢谢大家@ Nanne @ devav2 @ saji89分享知识-您真棒#####
amoooc

10

@ 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)的提交,该提交删除了其repo中的行。也是添加新available列的提交


4

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

以下是http://www.linfo.org/free.html提供的说明

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

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

第三行以Swap开头,显示了总交换空间以及当前正在使用的交换空间和仍然可用的空间。

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

您已将free命令与'-m'选项一起使用,该选项用于以兆字节为单位显示结果

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

总内存为595(已用+免费)

使用:482免费:112

595MB中的482MB用于系统,其中活动程序仅使用93MB,高速缓存中剩余324MB

因此,当您将来运行任何程序时,请说它需要更多120MB。将提供全部112MB(当前可用),剩余的8MB将从非活动程序缓冲区/高速缓存中获取。

编辑:找到此链接,它提供了很好的解释。


我认为这是不正确的。如果丢弃高速缓存,则已使用了93mb,因此还剩下501。
Nanne 2012年

您为什么认为这是不正确的。OP系统上的可用内存为112MB + 324MB(已缓存)。因此,当一个新程序启动时,它将首先使用112MB,然后再使用缓存。
devav2 2012年

基本上是因为595-93=501 and(取整或取1mb取整),它的读取有点像是112您认为op正在寻找的数字。
Nanne 2012年

501是正确的,这就是我要解释的内容。在595中,使用了482。其中只有93是程序使用的活动内存。因此112是免费可用+如果需要更多,则可以从以前使用过的缓存中获取内存,而该缓存当前未处于活动状态。
devav2 2012年

好,然后同意:)
Nanne 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.