Linux 占用了我的内存!

Linux 占用了我的内存!

我使用系统监视器查看了内存使用情况,结果显示 778Mb/2012Mb。然后我在终端上使用 free -m 检查了内存使用情况。我看到了

             total       used       free     shared    buffers     cached
Mem:          2012       1922         89          0        130       1013
-/+ buffers/cache:        778       1234
Swap:         2047          0       2047

为什么会有这么大的差异。看起来系统监视器显示 -/+ 缓冲区/缓存读数为总使用内存。但这到底是什么?如果使用内存 1922Mb 是真的,那么我的系统就会变得非常慢。有人能解释一下吗?我使用 Fedora 13

答案1

我想向有这种担忧的人推荐这个网站:www.linuxatemyram.com

Linux 占用了我的内存!

这是怎么回事?

Linux 正在借用未使用的内存进行磁盘缓存。这看起来好像您的内存不足,但实际上并非如此!一切都很好!

[...]

如果事实并非如此,为什么 top 和 free 会说我所有的内存都已被使用?

这只是对术语的误解。您和 Linux 都同意应用程序占用的内存是“已使用”,而未用于任何用途的内存是“空闲”的。

但是,既可用于某项用途又可供应用程序使用的内存该如何称呼呢?

您可能称之为“免费”,但 Linux 称之为“已使用”。

Memory that is               You'd call it  Linux calls it
---------------------------  -------------  --------------
taken by applications                 Used            Used
available for applications,
  and used for something              Free            Used
not used for anything                 Free            Free

这个“东西”就是 top 和 free 所称的“缓冲区”和“缓存”。由于你的术语和 Linux 的术语不同,所以你认为内存不足,但实际上并非如此。

我如何知道我实际有多少可用内存?

要查看有多少内存可供应用程序使用,请运行free -m并查看“空闲”列中显示“-/+ 缓冲区/缓存”的行。这就是以兆字节为单位的答案。

[...]

答案2

您所说的大部分内存只是缓存数据。这意味着(一般来说)操作系统已经预测了近期可能访问的内容,如果它猜对了(非常非常常见),那么您将获得显著的速度提升。

如果由于某种原因需要更多内存,则某些内容就会从缓存中清除。

当操作系统/程序被迫直接从交换分区提取数据时,会出现急剧的减速,因为硬盘比 RAM 慢得多。

相关内容