![Linux 占用了我的内存!](https://linux22.com/image/1319195/Linux%20%E5%8D%A0%E7%94%A8%E4%BA%86%E6%88%91%E7%9A%84%E5%86%85%E5%AD%98%EF%BC%81.png)
我使用系统监视器查看了内存使用情况,结果显示 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 慢得多。