【问题标题】:What is available and free memory in response of free command on Linux? [closed]Linux 上响应 free 命令的可用内存和可用内存是什么? [关闭]
【发布时间】:2017-05-16 13:12:33
【问题描述】:

我在 Linux 主机上触发的 free 命令的输出如下:

free
              total        used        free      shared  buff/cache   available
Mem:      263846320    47746620     3290072     1140808   212809628   214382420
Swap:             0           0           0

我无法弄清楚这个可用部分指定了什么。 可用内存显示得非常少,即 1.24% 左右,尽管总内存很高且已用内存仅为 18.09% 左右。

free -h
              total        used        free      shared  buff/cache   available
Mem:           251G         45G        3.1G        1.1G        202G        204G
Swap:            0B          0B          0B

这是否意味着由于可用内存非常少,我将无法启动更多应用程序?已用内存仅为 18%。那么释放内存不应该是 82% 而不是 1.24%,如上面的命令所示?

我很困惑。有人可以帮忙吗?

【问题讨论】:

标签: linux unix memory heap-memory free-command


【解决方案1】:

现代操作系统竭尽全力保持尽可能少的可用内存。空闲的内存实际上更难使用,因为它必须从空闲转换为使用中。已经在使用的内存,即可用但不是空闲的内存,可以很容易地切换到另一个用途。

这一切都很正常。空闲内存被浪费了,不会让你的系统更快。

如果您在想“但我现在想释放我的内存,以便以后可以使用它”,请意识到这是没有意义的。您无法为以后节省内存。今天使用 2GB 的 4GB 系统明天无法使用 6GB。您现在都可以使用您的记忆。这里没有折衷——使用内存是免费。使用内存的唯一选择是浪费它。为什么您希望您的系统浪费更多内存?

【讨论】:

  • 非信息性答案,不包含技术信息,即:可用 = 估计有多少内存可用于启动新应用程序,无需交换。与缓存或空闲字段提供的数据不同,该字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都会被回收(MemAvailable in /proc/meminfo,可在内核 3.14 上使用,在内核 2.6.27+,否则与免费相同)
  • @DanKey 该信息更容易误导而不是教育,因为它没有考虑内核持有的内存,它可以丢弃以使内存可用于新应用程序。在许多现实情况下,这远远没有用。 (想象一下,如果 80% 的已用内存是文件系统 元数据 缓存,这确实会发生。)认为你知道一些你真的不知道的事情是非常危险的。
  • 所以要给出建设性的信息,比如“内核持有的可以丢弃以使新应用程序可用的内存”之类的建设性信息,而不是情绪化的“空闲内存被浪费”或误导性的“你无法保存内存供以后使用”,因为空闲内存完全等待以后使用
  • @DanKey 这不是建设性的,因为它会导致碎片化和混乱的理解。保持简单而不是试图在几段中让某人完全理解会更有帮助。此外,已用内存等待以后使用,就像空闲内存一样。 所有内存等待以后使用。
  • 关于“估计有多少内存可用于启动新应用程序”。假设一个现有的进程突然需要更多的内存,“可用”类别的内存会分配给应用程序,还是该进程会耗尽“可用”内存的供应然后被内核杀死?
猜你喜欢
  • 1970-01-01
  • 2013-06-30
  • 2012-05-22
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多