免费命令中有什么可用的v/s可用内存?

Nis*_*ara 17 unix linux memory heap-memory free-command

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

free
              total        used        free      shared  buff/cache   available
Mem:      263846320    47746620     3290072     1140808   212809628   214382420
Swap:             0           0           0
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这个可用部分指定的内容.尽管总内存很高并且使用的内存仅为18.09%,但可用内存的显示非常少,即大约1.24%.

free -h
              total        used        free      shared  buff/cache   available
Mem:           251G         45G        3.1G        1.1G        202G        204G
Swap:            0B          0B          0B
Run Code Online (Sandbox Code Playgroud)

这是否意味着我无法启动更多应用程序,因为可用内存非常少.使用的内存仅为18%.所以不应该释放82%而不是1.24%,因为命令显示在上面.

我很迷惑.有人可以帮忙吗?

Dav*_*rtz 23

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

这一切都很正常.可用内存浪费,不会使您的系统更快.

如果您正在考虑"但我现在想要我的记忆,以便我以后可以使用它",请意识到这没有任何意义.您无法保存以供日后使用.今天使用2GB的4GB系统明天不能使用6GB.你现在以后都可以使用你的记忆.这里没有权衡 - 使用内存是免费的.使用内存的唯一选择是浪费它.为什么您希望系统浪费更多内存?

  • 不是信息性答案,不包含技术信息,即:可用=估计可用于启动新应用程序的内存量,无需交换.与缓存或空闲字段提供的数据不同,此字段考虑了页面缓存,并且由于正在使用的项目,并非所有可回收的内存块都将被回收(MemAvailable在/ proc/meminfo中,在内核3.14上可用,模拟在内核2.6.27+,否则与免费相同) (14认同)
  • @DanKey该信息更有可能误导而不是教育,因为它没有考虑内核持有的内存,它可以丢弃它以使内存可用于新应用程序。在许多现实情况下,这是无用的。(想象一下,如果 80% 的已用内存是文件系统 * 元数据 * 缓存,这确实会发生。)认为你知道一些你真的不知道的事情是非常危险的。 (4认同)
  • @DanKey 这不是建设性的,因为它导致了支离破碎和混乱的理解。保持简单而不是试图在几段中让某人完全理解更有帮助。此外,已用内存等待稍后使用,就像空闲内存一样。*所有*内存等待以后使用。 (3认同)
  • 所以给出一些建设性的信息,比如"内核持有它可以丢弃以使内存可用于新应用程序的内存",而不是情感"免费内存被浪费"或误导"你无法为以后节省内存",因为空闲内存正好等待以后再使用 (2认同)