如何清理或禁用内存缓存?

Bha*_*aju 54 bash kernel memory cache software-recommendation

系统启动后,几分钟后我的内存缓存填满并开始使用交换。这是 /proc/meminfo 的屏幕截图。

记忆

但是,如果我可以在此之后禁用此进程/清理缓存一次,我认为我的系统会在一定程度上加快速度。如果我在这里错了,请纠正我。

我也尝试过 Bleachbit 内存清理,但它似乎没有正确清理内存缓存。此外,该功能仍处于试验阶段。

漂白位记忆

这里已经发布了一个类似的问题:如何禁用预取缓存?,但它是关于 Ubuntu Server 的,而且答案还涉及手动设置等。

所以,我想知道是否有一些软件可以禁用/启用 Ubuntu 12.04 的内存缓存。

ish*_*ish 63

注意: Linux 不会“吃掉”你的 RAM!请查看下面Geirha 的出色回答,以了解为什么...

在上面的注释之后,如果你仍然觉得“清理”缓存有帮助,你当然可以尝试:它是终端的单行:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

没有简单的方法可以禁用缓存,但是如果您想,可以通过每分钟清理一次来达到相同的效果:

  • 让它成为一项定时工作

  • Alt-F2,键入gksudo gedit /etc/crontab,然后在底部附近添加以下行:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • 这将每 15 分钟清洁一次。如果您真的想 通过将第一个参数更改为**/5代替,您可以设置为 1 或 5 分钟*/15

一个知道真正的空闲内存的班轮,除了缓存

Geirha 的回答解释了详细信息,但简而言之,您可以通过以下方式获得免费兆字节数:

free -m | sed -n -e '3p' | grep -Po "\d+$"
Run Code Online (Sandbox Code Playgroud)

在我的 2GB 命令行服务器上返回一个非常健康的1835.

  • 呃!淘汰缓存已经够糟糕的了,但是为它做一个 cronjob 吗?我的意思是,这确实“解决”了问题,可以这么说,但这并没有减轻它的痛苦。 (4认同)
  • @Reid:[“*我们的*不是去推理为什么;他们的而是做然后死”](http://en.wikipedia.org/wiki/The_Charge_of_the_Light_Brigade_%28poem%29) ;) (2认同)
  • @ForbiddenOverseer:我只是把它放进去,因为你想“禁用”缓存,而定期删除它是实现这一目标的唯一方法。我在顶部的注释(以及 geirha 的链接)清楚地表明,缓存实际上在大多数情况下都会加速您的系统,即使它看起来像是“吃掉您的 RAM”——所以是的,在我看来,您会减慢您的系统速度,但你想尝试一下,所以我只是回答你的问题,而不是简单地唠叨你,告诉你这是一个坏主意,所以你不应该这样做!我只是给了你实验的权力...:D (2认同)

gei*_*rha 55

帮助!Linux 吃了我的内存!

www.linuxatemyram.com以常见问题的形式很好地解释了这一点,要点是:

这是怎么回事?

Linux 借用未使用的内存用于磁盘缓存。这使得看起来您的内存不足,但事实并非如此!一切安好!

为什么要这样做?

磁盘缓存使系统更快!除了让新手感到困惑之外,没有任何缺点。它不会以任何方式占用应用程序的内存,永远!

如果我想运行更多应用程序怎么办?

如果您的应用程序需要更多内存,它们只需取回磁盘缓存借用的块。磁盘缓存总是可以立即返回给应用程序!你的内存不低!

我如何查看我真正拥有多少可用内存?

要查看您的应用程序在不交换的情况下可以使用多少内存,请运行 free -m 并查看“可用”列:

$免费 -m
              可用的免费共享 buff/缓存总数
电话:1504 1491 13 0 855       792
掉期:2047 6 2041
这是您的答案(以兆字节为单位)。


来源:如前所述,优秀的www.linuxatemyram.com -- 请访问以获取更多信息。


Sil*_*lle 6

检查您当前的内存使用情况

 watch -n 1 free -m
Run Code Online (Sandbox Code Playgroud)

或者

 watch -n 1 cat /proc/meminfo
Run Code Online (Sandbox Code Playgroud)

释放空间

 sudo sysctl -w vm.drop_caches=3
Run Code Online (Sandbox Code Playgroud)

注意:此操作不会使您的系统更快,也不会影响其稳定性和性能,它只会清理 Linux 内核在缓存上使用的内存。

或者

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)

注意:您可以使用 cron 作业来安排上述命令以特定时间间隔运行。