实际内存使用情况

15 linux memory

如果我理解正确,在 free 生成的以下输出中,3535m 是应用程序可用的实际可用内存,仅使用了 413m,这是正确的吗?需要澄清一下 Mem 和 -/+ 缓冲区/缓存行之间的区别。

自由 -m
             缓存的已用空闲共享缓冲区总数
电话:3949 3854 95 0 9 3431
-/+ 缓冲区/缓存:413 3535
掉期:2047 1322 725

Gil*_*il' 16

Mem: total数字是应用程序可以使用的 RAM 总量。这是系统上安装的总 RAM,减去:

  • 硬件设备保留的内存(如果显卡没有自己的内存,通常是视频内存);
  • 内核本身使用的内存。

该总数包括:

  • free:当前用于任何目的的内存;
  • shared: 一个不再存在的概念。它留在输出中是为了向后兼容(有一些脚本可以解析来自 的输出free)。(在当前系统上,您通常会看到非零值,因为shared已重新调整用途以显示通过共享内存机制显式共享的内存。在较旧的系统上,它包括由多个进程映射的文件和在 之后保持共享的可共享内存fork()。)
  • buffers: 由文件支持的内存,如果需要,可以写出到磁盘;
  • cache:由文件支持的内存,可以随时回收(不同之buffers处在于缓冲区必须在重用之前保存到磁盘,而缓存由可以从磁盘重新加载的内容组成);
  • used -buffers/cache:应用程序使用的内存(而不是调出以进行交换)。

在紧要关头,系统可以在没有缓冲区和缓存的情况下运行,为应用程序保留 RAM,并在没有任何缓存的情况下系统地执行磁盘读取和写入。这些-/+ buffers/cache数字表示应用程序直接使用的 RAM 量(used列)和应用程序未使用的 RAM 量(free列)。

尽管这可能会有很大差异,但一个健康的系统通常将大约一半的 RAM 用于应用程序,一半用于缓冲区和缓存。除非您运行的是专用文件服务器,否则您的系统的 RAM 将超出您当前工作所需的内存。如果该free - buffers/cache数字较低,则表明系统没有足够的 RAM(与普遍的看法相反,将大量内存专用于缓冲区和缓存对系统性能很重要,而尝试为应用程序保留更多内存会使 99.99% 的系统变慢)。

swap行很简单,它显示了正在使用的交换量(由应用程序或用于tmpfs存储),以及未使用的交换量。

  • “共享:一个不再存在的概念。” - 看起来它在 2011 年至 2016 年之间的某个时候被重新引入:https://unix.stackexchange.com/questions/307015/what-is-the-meaning-of-shared-memory -在自由命令中 (3认同)

n. *_* m. 3

你是对的。缓冲区和缓存由操作系统使用,但可供应用程序立即使用。操作系统愿意使一些缓存失效并丢弃,以满足下一个内存请求。