![实际内存使用情况](https://linux22.com/image/2185/%E5%AE%9E%E9%99%85%E5%86%85%E5%AD%98%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5.png)
如果我理解正确的话,在 free 生成的以下输出中,3535m 是应用程序可用的实际可用内存,仅使用了 413m,这是正确的吗?需要澄清 Mem 和 -/+ 缓冲区/缓存行之间的区别。
自由-m 缓存的已用空闲共享缓冲区总数 内存:3949 3854 95 0 9 3431 -/+ 缓冲区/高速缓存:413 3535 兑换:2047 1322 725
答案1
该Mem: total
数字是应用程序可以使用的 RAM 总量。这是系统上安装的总 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
存储)以及未使用的交换量。
答案2
你是对的。缓冲区和缓存由操作系统使用,但可供应用程序立即使用。操作系统愿意使一些缓存失效并丢弃,以满足下一个内存请求。
答案3
另一个答案是对免费的绝佳诠释。但你为什么要看免费的呢?大概是因为您担心系统内存不足。
作为对此的更新,Linux 内核 4.20 添加了/proc/pressure/
(“压力失速信息”),其中包含有关瓶颈(CPU、I/O 或内存)何时导致系统变慢的指示器。
如果您查看 /proc/Pressure/Memory 的内容,它将告诉您进程正在等待为其分配内存的样本的百分比。如果这些数字都为零(总数除外),那么您的系统没有内存不足,也没有等待内存。