0

只是寻找一些关于free -mLinux 输出的快速帮助。这是我的一台服务器上的示例:

  $free -m
               total       used       free     shared    buffers     cached
  Mem:         14881      14813         68          0        262        883
  -/+ buffers/cache:      13667       1213
  Swap:         4095        240       3855

我了解内核可以并且将使用可用内存进行磁盘缓存以加速系统。

通常,我查看“免费”列中的第二个值,在上面的例子中是 1213。它通常比这个高很多。

我想我想了解“-/+ 缓冲区/缓存”旁边的两个输出是什么意思。从我所见,系统确实内存不足(只有 1213MB 可供应用程序使用),而操作系统实际上需要13GB 用于缓存?

4

1 回答 1

14

在 serverfault 中得到解答。以下是相关摘录:

total= used+free

  • shared// buffers:cached这显示了用于特定目的的内存使用情况,这些值包含在 的值中used

第二行给出调整后的第一行值。它给出了used 减去总和buffers+cached的原始值和free 加上总和的原始值buffers+cached,因此它的标题。这些新值通常比第一行的值更有意义。

[摘录结束]

专注于你的情况,

  • 14813(已用内存)- 262(缓冲)- 883(缓存)= 13668(应用程序使用)。

如果应用程序需要更多内存,可以从空闲内存或缓存/缓冲中获取,因此:

  • 262(缓冲)+ 883(缓存)+ 68(根本不使用)= 1213(应用程序可用)。

系统实际上并不需要262+883=1145(不是 13GB)用于缓存和缓冲区,但既然它就在那里,它就需要它(但如果应用程序需要更多,它会归还)。看看Linux 吃了我的 RAM!页。

您还可以使用top(我个人更喜欢htop)查看内存状态以及哪些应用程序占用了最多的 RAM。

例如,下面是在我的 RaspberryPi 中运行的 htop 和free -h执行的屏幕截图:

在此处输入图像描述

raspberry ~ # free -h
             total       used       free     shared    buffers     cached
Mem:          183M       178M       5,3M         0B        63M        42M
-/+ buffers/cache:        72M       111M
Swap:           0B         0B         0B
于 2014-07-09T01:57:02.263 回答